Django Nginx uWSGI 502 Bad Gateway 总是
Posted
技术标签:
【中文标题】Django Nginx uWSGI 502 Bad Gateway 总是【英文标题】:Django Nginx uWSGI 502 Bad Gateway always 【发布时间】:2017-03-13 10:03:22 【问题描述】:我一直在关注http://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html
然后走到了
http://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html#running-the-django-application-with-uwsgi-and-nginx
并启动了 uwsgi --socket mysite.sock --module mysite.wsgi --chmod-socket=664 它已启动但是当我在浏览器上加载我的网页时得到 502 Bad Gateway
Django 版本 1.10.2
错误是
错误] 25444#25444: *1 connect() 失败(111:连接被拒绝) 连接上游时,客户端:127.0.0.1,服务器:mytest.com, 请求:“GET / HTTP/1.1”,上游:“uwsgi://127.0.0.1:8001”,主机: "127.0.0.1:8000"
可能是什么问题?
# configuration of the server
server
# the port your site will be served on
listen 8000;
# the domain name it will serve for
server_name mytest.com; # substitute your machine's IP address or FQDN
charset utf-8;
# max upload size
client_max_body_size 175M; # adjust to taste
# Django media
location /media
alias /home/karesh/tutorial/uwsgi-tutorial/mysite/media; # your Django project's media files - amend as required
location /static
alias /home/karesh/tutorial/uwsgi-tutorial/mysite/static; # your Django project's static files - amend as required
# Finally, send all non-media requests to the Django server.
location /
uwsgi_pass unix:/home/karesh/tutorial/uwsgi-tutorial/mysite/mysite.sock;
include /home/karesh/tutorial/uwsgi-tutorial/mysite/uwsgi_params; # the uwsgi_params file you installed
项目目录中的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 REQUEST_SCHEME $scheme;
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;
【问题讨论】:
如该错误所示,nginx 正在尝试通过端口而不是套接字进行连接。您应该显示您的 nginx 配置。 我所做的和教程中的完全一样。我的 mysite_nginx.conf 链接在启用站点的内部。 你修改配置后重启nginx了吗? 是的,我试过很多次。以前我已经安装了 apache2 并将其删除。有什么会引起问题的吗? Nginx 没有看到您的配置中的更改。你确定它链接到sites-enabled
?如果是,sudo service nginx force-reload
或 restart
。
【参考方案1】:
有几件事可以帮助您:
1) 将运行 uWSGI 的用户添加到 nginx
组
2) 在启用 SE 的 CentOS 上,放置套接字的最佳方法是在 /run
下的目录
3) 将套接字权限设置为<your_user>:nginx
(换句话说 - 为您的用户和 nginx 组设置套接字权限。
这些步骤通常可以帮助我找出权限错误。
【讨论】:
以上是关于Django Nginx uWSGI 502 Bad Gateway 总是的主要内容,如果未能解决你的问题,请参考以下文章
Django Nginx uWSGI 502 Bad Gateway 总是
django+uwsgi+nginx: websock 报502/400
Nginx+uWSGI+Django 在大请求正文和过期会话时返回 502