Bad Gateway 502 Error with Django, Gunicorn and Ng

2019-09-13 02:40发布

问题:

I am trying to run project on Django with Gunicorn and Nginx. On DigitalOcean OneClick install image my project works fine with no virtualenv and with global Django installation. But when I created virtual environment for different Django version I couldn't get it to work. So kindly someone please provide me some help with the multi site hosting on Ubuntu using virtual environment. Follwing is my Gunicorn settings for virtual environment:

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:

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.

回答1:

'Bad Gateway' indicates that Nginx is having trouble connecting the the Gunicorn process.

  1. Double check that the service that starts Gunicorn (the one defined by the upstart script you posted) is actually running
  2. What happens when you do curl http://127.0.0.1:9500/? Do you get a response from Gunicorn?


回答2:

This is due to lack of understanding about Nginx. I added www.mydomain.com in Nginx but I have habit of typing domain name without www in browser. I simply added "mydomain.com" and "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. It could be one of the reason. Thanks for help though guys.