[英]Trouble with using Nginx with django and uwsgi
我按照http://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html中的步骤进行操作,但是当所有步骤完成而没有任何错误时,我访问了127.0.0.1:8000,它的响应超时,我的nginx日志显示
上游超时(110:连接超时),同时从上游读取响应头,
顺便说一下,我可以访问127.0.0.1:8001,其中uwsgi和django运行良好。 而且我也可以访问127.0.0.1:8000/image/1.jpg中的图像,但无法访问127.0.0.1:8000
这是我的nginx.conf
upstream django {
server 127.0.0.1:8001;
}
server {
listen 8000;
server_name 127.0.0.1
charset utf-8;
client_max_body_size 75M;
location /media {
alias /home/zhaolei/virtualdjango/bin/mysite/media;
}
location /image {
alias /home/zhaolei/virtualdjango/bin/mysite/image;
}
location / {
uwsgi_pass django;
include /home/zhaolei/virtualdjango/bin/mysite/uwsgi_params;
}
}
我使用uwsgi --http 127.0.0.1:8001 --chdir=mysite --module=mysite.wsgi
运行uwsgi --http 127.0.0.1:8001 --chdir=mysite --module=mysite.wsgi
。 我在https://github.com/nginx/nginx/blob/master/conf/uwsgi_params中使用uwsgi_params
主机
uWSGI有2种协议可与Web服务器通信。 其中之一是普通的HTTP协议,该协议也可用于直接与客户端通信。 但是,还有特殊的uwsgi协议,该协议针对HTTP代理服务器和uWSGI之间的通信进行了优化。
当使用uwsgi_pass
指令时,nginx将使用该协议,而在使用--socket
参数启动uWSGI服务器时,将由uWSGI使用该协议。
如果您要使用--http
参数启动uWSGI,则uWSGI将使用HTTP协议(这就是您正在做的事情),但是如果nginx仍在使用uwsgi_pass
则期望在该套接字上使用uWSGI协议,而不是HTTP。
要解决此问题,您必须将--http
start命令更改为使用--socket
而不是--http
(这是推荐的方式,但是您无法通过直接在浏览器中输入127.0.0.8001
来检查uWSGI是否正常运行,但这没关系:如果您使用--http
的命令正常运行,则在--http
使用--socket
或使用proxy_pass
而不是uwsgi_pass
不会有任何区别。
并在您提到的链接上进行了描述,就在这里
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.