繁体   English   中英

Django,Gunicorn和Nginx出现错误的Gateway 502错误

[英]Bad Gateway 502 Error with Django, Gunicorn and Nginx

我正在尝试使用Gunicorn和Nginx在Django上运行项目。 在DigitalOcean OneClick安装映像上,我的项目在没有virtualenv和全局Django安装的情况下都能正常运行。 但是,当我为不同的Django版本创建虚拟环境时,我无法使其正常工作。 因此,请有人为我提供一些使用虚拟环境在Ubuntu上托管多站点的帮助。 我的Gunicorn虚拟环境设置如下:

description "Gunicorn daemon for Django project"

start on (local-filesystems and net-device-up IFACE=eth0)
stop on runlevel [!12345]

# If the process quits unexpectadly trigger a respawn
respawn

setuid django
setgid django
chdir /home/django

exec gunicorn \
    --name=myproject2\
    --pythonpath=myproject2\
    --bind=127.0.0.1:9500 \
    --config /etc/gunicorn.d/gunicorn.py \
    myproject2.wsgi:application

我的第二个项目的Nginx设置是:

upstream ashyanaa_server {
    server 127.0.0.1:9500 fail_timeout=0;

}


server {
    listen 80;
    listen [::]:80;


    root /home/django/myproject2;
    index index.html index.htm;

    client_max_body_size 4G;
    server_name www.myproject2.com;


    keepalive_timeout 5;

    location ~*  \.(jpg|jpeg|png|gif|ico|css|js|woff2|woff|ttf)$ {
        expires 365d;

    }



    # Your Django project's media files - amend as required
    location /media  {
        alias /home/django/myproject2/media/;
    }

    # your Django project's static files - amend as required
    location static/static-only {
        alias /home/django/myproject2/static-only/; 

    }
    # Django static images
    location /static/myproject2/images {
        alias /home/django/myproject2/static-only/images/;
    }


    # Proxy the static assests for the Django Admin panel
    location /static/admin {
       alias /usr/lib/python2.7/dist-packages/django/contrib/admin/static/admin;
    }

    location / {


        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://myproject2_server;


    }

我的第一个项目设置与第二个项目设置唯一不同的是,我为第二个项目使用虚拟环境,并且显然我必须为新项目使用不同的端口。

“错误的网关”表示Nginx无法连接Gunicorn进程。

  1. 仔细检查启动Gunicorn的服务(由您发布的upstart脚本定义的服务)是否正在运行
  2. curl http://127.0.0.1:9500/会发生什么? 您收到Gunicorn的回应了吗?

这是由于缺乏对Nginx的了解。 我在Nginx中添加了www.mydomain.com,但是我习惯在浏览器中输入没有www的域名。 我只是添加了“ mydomain.com”和“ www.mydomain.com”。 因此,现在两者都可以正常工作。 如果所有设置正确,但仍然得到502,供其他用户使用,这意味着您要查找的地址未在Nginx中列出。 这可能是原因之一。 谢谢你们的帮助。

暂无
暂无

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

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