我在使用 nginx 反向代理时遇到问题,有时我会收到 502 BAD GATEWAY 日志:
*63071 upstream prematurely closed connection while reading response header from upstream...
所以我找到了一个临时解决方案,当响应时间太长(超过 5 秒)时重置连接。有人能告诉我怎么做吗?
答案1
问题解决了,这是我的配置:
upstream backend {
server xxx.xxx.xxx.xxx max_fails=2 fail_timeout=3s;
#If waiting time greater than 3s and don't receive response from backend, try to reconnect.
}
server {
listen 80;
....
proxy_pass http://backend;
}
答案2
您可以在 nginx 配置中设置超时。
如果由于代理连接时间过长而产生错误(例如由于后端关闭),您可以使用proxy_connect_timeout
(来自文档:定义与代理服务器建立连接的超时时间。
如果由于代理发送数据的时间过长而产生错误(例如因为后端花费了太多时间来检索数据),则可以使用proxy_read_timeout
(来自文档:定义从代理服务器读取响应的超时时间。超时时间仅在两次连续的读取操作之间设置,而不是针对整个响应的传输。如果代理服务器在此时间内未传输任何内容,则连接将关闭。)