Question

502 Bad Gateway Error on Ubuntu/NGINX/Unicorn/Django Website

Hi i followed along on the great tutorial here:

https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04

And i was able to get things working on both a test server and on my live website.

But after a few days i got a 502 Bad Gatway Error on my domain.

I’ve spent the last two days trying to fix the problem to no avail. I’m assuming its some sort of permissions issue between NGINX and Gunicorn but have no idea what the problem might be.

The gunicorn error log is saying that it can’t connect to the sock file.

The NGINX error log is showing a connect to sock failed error.

I’ve tried to change firewall settings, user permissons, paths everything it seems and still not working.

Anyone have any idea what might be the issue here?


Submit an answer

This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Sign In or Sign Up to Answer

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

okay so i changed the directory —per some recommendations in another post about security to this:

unix:/var/log/gunicorn/chrisblog.sock

here is my full gunicorn.service file:

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

[Service]
User=django
Group=www-data
WorkingDirectory=/home/django/chrisblog
ExecStart=/home/django/chrisblog/myprojectenv/bin/gunicorn --workers 3 --bind unix:/var/log/gunicorn/chrisblog.sock chrisblog.wsgi$
[Install]
WantedBy=multi-user.target

and here is my nginx file

server {
    
    listen 80;
    server_name 45.32.201.31 pythoncreate.com;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/django/chrisblog;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/var/log/gunicorn/chrisblog.sock;
    }
}

Seems like the problem is in Gunicorn, so focus on that only. What’s your Gunicorn socket file path? Seems like that’s the common problem - as described in length here: http://stackoverflow.com/questions/28689445/nginx-django-and-gunicorn-gunicorn-sock-file-is-missing