4 回答
TA贡献1876条经验 获得超5个赞
似乎请求超时对您来说不是问题。这是连接超时。我认为我们需要看看标题
连接
AFAIK,标头定义,连接应该是持久的,或者谁有权维护/关闭它。如果连接为 ,则连接将持久。对于保持活动状态的连接,客户端偶尔会发送 TCP ping,以确保服务器仍处于活动状态并保持连接。根据卷曲,默认情况下,此时间是每 60 秒一次。Connection
keep-alive
现在,必须将 配置为接受连接,并使用 keepalive_timeout
指令使其保持活动状态一段时间。如果不存在,则不会使连接保持活动状态。nginx
nginx
这应该就是nginx在日志中说499的原因。HTTP499是nginx中的一个控制错误,它说客户端关闭了连接。在你的情况下关闭了它。为什么要关闭它?因为 nginx 没有响应 60 秒的 TCP ping,因为未启用保持活动状态。curl
curl
将keepalive_timeout
添加到 ~500 或高于应用程序超时的值应该可以解决您的问题。
现在,为什么它直接与雄猫合作?我认为春天使活动超时是无限的或非常高的值。通常在雄猫中也有它的60秒。
我希望这能解决你的问题。
TA贡献1847条经验 获得超11个赞
我想这是由于许多其他事情而可能发生的问题之一。这是一个对我有用的解决方案(我也在以下位置遇到错误:/var/log/nginx/error.log
2020/12/30 21:47:47 [错误] 26765#26765: *13064 上游超时 (110: 连接超时) 连接到上游时, 客户端: XXX, 服务器: example.com, 请求: “GET /eshop HTTP/1.0”, 上游: “http://[::1]:8080/error_50x.html”, 主机: “example.com”
奇怪的是,这并没有发生在我的笔记本电脑上,而只发生在我的服务器上。所以我检查了IP,结果发现这可能是因为缺少::1地址。当我将其添加到 lo 网络设备时,我无法复制超时。
sudo ip a add ::1/128 dev lo
下一篇:(这是我的理解,我不是100%确定:)此外,由于保持与localhost Java服务连接的开销似乎高于仅删除该连接并在发出另一个请求时再次连接,因此建议对代理使用以下设置(在nginx的站点.conf中):
proxy_http_version 1.1; proxy_set_header Connection "";
请参阅 https://stackoverflow.com/a/10396874/3223505
TA贡献1793条经验 获得超6个赞
由于您的配置缺少proxy_http_version键,因此可能仍无法为上游启用 Keepalive。
引用自:https://www.nginx.com/blog/tuning-nginx/#proxy_http_version
要启用与上游服务器的保持活动连接,还必须在配置中包含以下指令:
proxy_http_version 1.1; proxy_set_header Connection "";
我也会按照Kris的建议将keepalive_timeout保留在配置中。
TA贡献2037条经验 获得超6个赞
尝试将超时设置放在 /etc/nginx/conf.d/timeout.conf 中(如果没有,请创建一个)。设置以下设置,
proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600;
添加回答
举报