Django nginx和uWSGI给出;504网关超时“;
我正在学习教程 uWSGI已启动并运行 我建立了uwsgi,为我的Django项目提供以下服务Django nginx和uWSGI给出;504网关超时“;,django,nginx,uwsgi,Django,Nginx,Uwsgi,我正在学习教程 uWSGI已启动并运行 我建立了uwsgi,为我的Django项目提供以下服务 mydjangoproj $ uwsgi --http 0.0.0.0:8002 --module wsgi --harakiri 5 当我在浏览器中转到42.42.42.42:8002时,这一功能就起作用了 我的nginx设置 nginx作为守护进程运行,访问它的默认站点端口80可以正常工作 我使用以下mydjangoproj_nginx.conf文件将其作为一个站点添加到nginx: serve
mydjangoproj $ uwsgi --http 0.0.0.0:8002 --module wsgi --harakiri 5
当我在浏览器中转到42.42.42.42:8002
时,这一功能就起作用了
我的nginx设置
nginx作为守护进程运行,访问它的默认站点端口80可以正常工作
我使用以下mydjangoproj_nginx.conf
文件将其作为一个站点添加到nginx:
server {
listen 8000;
server_name 42.42.42.42;
charset utf-8;
client_max_body_size 75M;
location /static {
alias /home/myuser/mydjangoproj/static;
}
location / {
uwsgi_pass 127.0.0.1:8002;
include /home/myuser/mydjangoproj/uwsgi_params;
}
}
我使用教程中未经修改的uwsgi_params
:
uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;
uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param HTTPS $https if_not_empty;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
它确实完美地服务于静态文件
错误
如果我访问42.42.42.42:8000,它会挂起很长一段时间,直到nginx超时,然后我得到504网关超时
uWSGI没有在shell中写入任何内容。如果直接在浏览器中访问,它会记录接收请求的情况
nginx错误日志仅在超时后写入:
2014/12/11 05:31:12 [error] 28895#0: *1 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 66.66.66.66, server: 42.42.42.42, request: "GET / HTTP/1.1", upstream: "uwsgi://42.42.42.42:8002", host: "42.42.42.42:8000"
如果我关闭uWSGI(它只是从shell运行),我会立即得到一个502坏网关
在线搜索时,人们只建议将uWSGI超时设置为低于nginx超时,这就是我使用--harakiri 5
运行uWSGI的原因
那么,我这里的问题是什么?我认为您正在http模式下运行uwsgi
--http 0.0.0:8002
,但是您已经将nginx配置为wsgi代理,请将您的uwsgi脚本更改为:
uwsgi --socket :8002 --module wsgi --harakiri 5
请注意,如果您在同一台机器上运行
nginx
和uwsgi
,最好使用执行此操作的!我认为nginx和uwsgi之间的通信应该是http,但显然是另一种连接。我通常会等几天,等待其他答案出现,然后选择最好的。我不知道这是否违反了指导方针。但我已经标记了它,现在回答:)Harakiri5和套接字超时5有什么不同?