繁体   English   中英

Python Django + Nginx + uwsgi 502错误网关

[英]Python Django+Nginx+uwsgi 502 Bad Gateway

当我连接到我的网站时,Centos7显示502 Bad Gateway,
我用命令测试我的网站
uwsgi --ini
systemctl启动nginx
我不知道发生了什么事,请帮助我!

这是nginx.conf

upstream django {
  server 127.0.0.1:8000;
}

server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  example.com;
    charset      utf-8;

    include /etc/nginx/default.d/*.conf;

    location / {
      include uwsgi_params;
      uwsgi_pass django;
    }

    location /static/ {
      alias /usr/local/etc/dmp/static/;
    }
}

和uwsgi设置

[uwsgi]

chdir = /usr/local/etc/dmp

module = DMP_python.wsgi

plugins = python3

socket = :8000

chmod-socket = 666

master = true

processes = 2

vacuum = true

您使用了错误的设置来告诉uwsgi使用HTTP端口。 您需要使用http-socket而不是socket

上游有多个原因可能返回无效甚至不返回任何响应,可能有多种原因

  • 验证上游uwsgi是否实际上在centos实例中本地运行,并且可以处理传入的请求

    1. 为此,以在uwsgi.ini中将其运行为http-socket = :8000 ,然后运行uwsgi --ini uwsgi.ini

    2. 如果uwsgi在本地主机上运行良好,则将配置更改回socket = :8000

  • 在centos 7.x上,SELinux软件包已启用并以强制模式运行。 因此,它不允许nginx写入/连接到套接字。

    1. 验证SELinux是否具有nginx写入套接字的策略
    2. 检查是否允许对套接字进行读/连接/写操作grep nginx /var/log/audit/audit.log | audit2allow -m nginx grep nginx /var/log/audit/audit.log | audit2allow -m nginx
    3. 通过grep nginx /var/log/audit/audit.log | audit2allow -M nginx做到这一点grep nginx /var/log/audit/audit.log | audit2allow -M nginx grep nginx /var/log/audit/audit.log | audit2allow -M nginx
    4. 最后是semodule -i nginx.pp
    5. 现在应该解决连接套接字的权限问题
    6. 验证nginx是否可以与上游进行网络连接。 检查nginx error.log或getsebool -a | grep httpd getsebool -a | grep httpd
    7. setsebool httpd_can_network_connect on -P运行setsebool httpd_can_network_connect on -P

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM