考虑下面的nginxconfiguration。 我有两个节点js服务器分别在端口8008和9008上运行。 当我在8008取下服务器时,在access.log收到502错误。 我已经validation了9008上的服务器通过交换端口并重新加载configuration来工作。 为什么我会看到502错误?
upstream backend { server localhost:8008 max_fails=1 fail_timeout=3s; server localhost:9008 backup; } server { listen 80; server_name app.domain.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name app.domain.com; ssl_certificate ssl/chained.crt; ssl_certificate_key ssl/server.key; location / { proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_cache off; proxy_cache_bypass $http_upgrade; } }
它必须与Connection: keep-alive 。 与后端有活动连接的客户端不会马上知道它是否正在运行,因此会尝试通过相同的连接向同一个后端服务器发出未来的请求。