使用的堆栈:
Nginx - > Uwsgi(代理通过) - > Django的
我有一个API,大约需要80秒才能执行查询。 Nginx在60秒后关闭与上游服务器的连接。这可以在nginx错误日志中找到:
upstream prematurely closed connection while reading response header from upstream
uWSGI和django应用程序日志没有显示任何奇怪的内容。
这是我的nginx配置:
server {
listen 80;
server_name xxxx;
client_max_body_size 10M;
location / {
include uwsgi_params;
proxy_pass http://127.0.0.1:8000;
proxy_connect_timeout 10m;
proxy_send_timeout 10m;
proxy_read_timeout 10m;
proxy_buffer_size 64k;
proxy_buffers 16 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_pass_header Set-Cookie;
proxy_redirect off;
proxy_hide_header Vary;
proxy_set_header Accept-Encoding '';
proxy_ignore_headers Cache-Control Expires;
proxy_set_header Referer $http_referer;
proxy_set_header Host $host;
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
如何增加超时,我已尝试设置proxy_pass超时变量,但它们似乎没有工作。
答案 0 :(得分:1)
好的,通过将proxy_pass
替换为uwsgi_pass
这就是我的nginx conf现在的样子:
server {
listen 80;
server_name xxxxx;
client_max_body_size 4G;
location /static/ {
alias /home/rmn/workspace/mf-analytics/public/;
}
location / {
include uwsgi_params;
uwsgi_pass unix:/tmp/uwsgi_web.sock;
uwsgi_read_timeout 600;
}
}
我必须在我的uwsgi ini文件中设置socket
参数。
出于某种原因,proxy_pass超时不会生效。