django - 为什么我在使用 Nginx 和 Gunicorn 的 Django 应用程序上得到 502 Bad Gateway?

标签 django nginx centos gunicorn

我一直在尝试使用 this tutorial 部署演示应用程序.我在 Virtualbox 中的 CentOS 7 上执行此操作。

但是,我得到了 502 Bad Gateway。我该如何解决这个问题?

nginx.conf 文件中的服务器 {} block

server {
        listen 80;
        server_name 172.16.16.215;

        location = /favicon.ico { access_log off; log_not_found off; }
        location /static/ {
            root /home/michel/myproject;
        }

        location / {
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_pass http://unix:/home/michel/myproject/myproject.sock;
        }
    }

gunicorn.service 文件

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=michel
Group=nginx
WorkingDirectory=/home/michel/myproject
ExecStart=/home/michel/myproject/myprojectenv/bin/gunicorn --workers 3 --bind unix:/home/michel/myproject/myproject.sock myproject.wsgi:application

[Install]
WantedBy=multi-user.target

var/logs/nginx/error.log

2016/08/28 18:55:14 [crit] 17557#0: *4 connect() to unix:/home/michel/myproject/myproject.sock failed (13: Permission denied) while connecting to upstream, client: 172.16.16.23, server: 172.16.16.217, request: "GET / HTTP/1.1", upstream: "http://unix:/home/michel/myproject/myproject.sock:/", host: "172.16.16.217"

最佳答案

Gunicorn没有权限保存.sock文件,或者nginx没有权限读取.sock文件。

将此文件移动到 /tmp/ 文件夹:

nginx.conf

proxy_pass http://unix:/tmp/myproject.sock:/;

gunicorn.service

ExecStart=/home/michel/myproject/myprojectenv/bin/gunicorn --workers 3 --bind unix:/tmp/myproject.sock myproject.wsgi:application

关于django - 为什么我在使用 Nginx 和 Gunicorn 的 Django 应用程序上得到 502 Bad Gateway?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39189077/

相关文章:

email - 如何在 Parallels Panel 上使用 Mandrill 应用程序作为系统消息邮件?

centos - 如何安装 tensorflow 显卡?

python - 删除查询集中的重复项

python - Django: ForeignKey Filter 查询Form中选中的数据

javascript - 在 javascript 服务器端连接 MySQL,无需使用 Node.js

nginx - 在单个服务器中管理和使用多个 Docker 容器(微服务)

nginx - 在 AKS 中的现有 Nginx 入口 Controller 上设置 TLS

date - 在 Linux 中将 x 秒添加到当前日期

python - Django 中同一行的多个字段

python - Heroku 和 Django : No default language could be detected for this app