简体   繁体   English

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

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

I am trying to run project on Django with Gunicorn and Nginx. 我正在尝试使用Gunicorn和Nginx在Django上运行项目。 On DigitalOcean OneClick install image my project works fine with no virtualenv and with global Django installation. 在DigitalOcean OneClick安装映像上,我的项目在没有virtualenv和全局Django安装的情况下都能正常运行。 But when I created virtual environment for different Django version I couldn't get it to work. 但是,当我为不同的Django版本创建虚拟环境时,我无法使其正常工作。 So kindly someone please provide me some help with the multi site hosting on Ubuntu using virtual environment. 因此,请有人为我提供一些使用虚拟环境在Ubuntu上托管多站点的帮助。 Follwing is my Gunicorn settings for virtual environment: 我的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

My Nginx settings for the second project are: 我的第二个项目的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;


    }

Only thing different in my first project settings from the second are that I am using virtual environment for the second project and obviously I had to use different port for new project. 我的第一个项目设置与第二个项目设置唯一不同的是,我为第二个项目使用虚拟环境,并且显然我必须为新项目使用不同的端口。

'Bad Gateway' indicates that Nginx is having trouble connecting the the Gunicorn process. “错误的网关”表示Nginx无法连接Gunicorn进程。

  1. Double check that the service that starts Gunicorn (the one defined by the upstart script you posted) is actually running 仔细检查启动Gunicorn的服务(由您发布的upstart脚本定义的服务)是否正在运行
  2. What happens when you do curl http://127.0.0.1:9500/ ? curl http://127.0.0.1:9500/会发生什么? Do you get a response from Gunicorn? 您收到Gunicorn的回应了吗?

This is due to lack of understanding about Nginx. 这是由于缺乏对Nginx的了解。 I added www.mydomain.com in Nginx but I have habit of typing domain name without www in browser. 我在Nginx中添加了www.mydomain.com,但是我习惯在浏览器中输入没有www的域名。 I simply added "mydomain.com" and "www.mydomain.com". 我只是添加了“ mydomain.com”和“ www.mydomain.com”。 So now both working without error. 因此,现在两者都可以正常工作。 For others to follow if you have all the settings correct and still getting 502 that means the address you are looking for is not listed in Nginx. 如果所有设置正确,但仍然得到502,供其他用户使用,这意味着您要查找的地址未在Nginx中列出。 It could be one of the reason. 这可能是原因之一。 Thanks for help though guys. 谢谢你们的帮助。

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

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