这个问题之前已被问过很多次,但没有一个答案对这种情况有帮助。
以下情况发生在
/api
位置。
默认情况下,Nginx 一分钟后发送 504 网关超时。我们通过
proxy_connect_timeout
、proxy_send_timeout
、proxy_read_timeout
、send_timeout
和 client_body_tiemout
将超时时间延长至 10 分钟。不幸的是,两分钟后请求仍然超时,并出现相同的网关超时错误。
我们还覆盖了连接标头以避免任何保持活动的问题,不幸的是,这也没有帮助。
还有其他设置可能将其限制为两分钟吗?
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:5000;
proxy_redirect off;
# Handle Web Socket connections
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection "upgrade";
proxy_set_header Connection "";
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
client_body_timeout 600;
location /api {
proxy_pass http://127.0.0.1:5001;
}
}
我建议验证超时的来源确实是 Nginx 服务器。我将 Nginx 配置的超时增加到 5 分钟,然后发现在 HAProxy 中超时设置为 2 分钟。