我正面临着在Nginx上运行SSE的问题。我使用的是一个使用Flask的网络应用,我使用一个名为flask-sse
的模块向JS方发送事件。
我使用gunicorn
来处理请求,我将其作为Nginx配置:
upstream backend {
server 127.0.0.1:5000;
keepalive 100;
}
server {
listen 80;
access_log /var/log/nginx/client-access.log;
error_log /var/log/nginx/client-error.log;
location / {
include proxy_params;
proxy_pass http://backend;
proxy_buffering off;
proxy_cache off;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
chunked_transfer_encoding off;
proxy_request_buffering off;
}
}
接收事件的端点位于/stream
。在Nginx日志中查看我已经意识到与此端点的第一个连接始终是504错误,如您所见:
10.2.2.254 - - [09/Apr/2018:09:06:14 +0000] "GET /stream HTTP/1.1" 504 585 "http://address/results" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"
这个Nginx正在一个名为Sophos(https://www.sophos.com/en-us.aspx)的网关后面运行。我不知道这是否会导致问题,但是当我从本地主机运行时,一切正常。
此外,我认为这真的很奇怪,第一个电话,我上面发布的电话,正在返回504,但随后的电话会返回200,这让我心烦意乱。
你们对如何解决这个问题有什么想法吗?我错过了一些Nginx配置吗?
由于