Nginx:响应时间太长时如何重置连接?

Nginx:响应时间太长时如何重置连接?

我在使用 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(来自文档:定义从代理服务器读取响应的超时时间。超时时间仅在两次连续的读取操作之间设置,而不是针对整个响应的传输。如果代理服务器在此时间内未传输任何内容,则连接将关闭。

相关内容