我有一个通过Nginx设置的Node.js,并涉及到Server-Sent事件。
无论我使用什么Nginx配置,sse连接在60秒后都会中断并重新初始化。如果我直接连接到Node服务它的端口上,则不会发生这种情况,因此显然是某个Nginx代理问题。
我希望sse连接没有超时。这可能吗? 我尝试了调整send_timeout
、keepalive_timeout
、client_body_timeout
和client_header_timeout
,但没有任何变化。以下是我的Nginx配置。
upstream foobar.org {
server 127.0.0.1:3201;
}
server {
listen 0.0.0.0:80;
server_name example.org;
client_max_body_size 0;
send_timeout 600s;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://example.org/;
proxy_redirect off;
proxy_set_header Connection '';
proxy_http_version 1.1;
chunked_transfer_encoding off;
proxy_buffering off;
proxy_cache off;
}
}
proxy_connect_timeout
指令是用来控制与代理服务器建立连接的超时时间,因此仅使用proxy_read_timeout
是不会抑制任何真正的 504 错误(即应用服务器崩溃时)的。 - ATG