Question

Unable to get Django Channels Daphne Nginx Supervisor to run: 502 bad gateway

I’m trying to traceback through the errors to find the core problem as to why my domain is displaying a 502 bad Gateway error.

I’m running a Django app using Python3+ on Digital Ocean Ubuntu 16.04 using Nginx and supervisor (which manages daphne because ASGI is needed for Django Channels).

I just can’t get it to work, I must be missing something.

Both Nginx and Supervisor are running.

The nginx error log shows:

 connect() failed (111: Connection refused) while connecting to upstream, client: 86.xxx.xxx.xxx, server: myapp.com, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:9000/", host: "www.myapp.com"

Running sudo /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf

2019-02-27 16:39:55,627 CRIT Supervisor running as root (no user in config file)
2019-02-27 16:39:55,627 WARN Included extra file "/etc/supervisor/conf.d/myapp_asgi.conf" during parsing
2019-02-27 16:39:55,629 INFO Creating socket tcp://127.0.0.1:8000
2019-02-27 16:39:55,629 INFO Closing socket tcp://127.0.0.1:8000
Error: Another program is already listening on a port that one of our HTTP servers is configured to use.  Shut this program down first before starting supervisord.

my nginx conf file

upstream myapp {
    server 127.0.0.1:8000;
}

server {
    server_name myapp.com www.myapp.com;

    location = /favicon.ico { access_log off; log_not_found off; }

    location / {
        try_files $uri @proxy_to_app;
    }

    location /static/ {
        root /home/me/myapp/src/myapp;
    }

    location /media/  {
        root /home/me/myapp/src/myapp;
        include /etc/nginx/mime.types;
    }

    location @proxy_to_app {
        proxy_pass http://myapp;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_redirect off;
        proxy_set_header Host $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-Host $server_name;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/myapp.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/myapp.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot


}


server {
    if ($host = www.myapp.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = myapp.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80;
    server_name myapp.com www.myapp.com;
    return 404; # managed by Certbot
}

my supervisor config file

[fcgi-program:asgi]
environment=PYTHONPATH=/usr/lib/python3.6/

# TCP socket used by Nginx backend upstream
socket=tcp://localhost:8000

# Directory where your site's project files are located
directory=/home/me/myapp/src/myapp

# Each process needs to have a separate socket file, so we use process_num
# Make sure to update "mysite.asgi" to match your project name
command=/home/me/Env/myapp/bin/daphne -u run/daphne/daphne%(process_nu$

# Number of processes to startup, roughly the number of CPUs you have
numprocs=4

# Give each process a unique name so they can be told apart
process_name=asgi%(process_num)d

# Automatically start and recover processes
autostart=true
autorestart=true

# Choose where you want your log to go
stdout_logfile=/home/me/daphne/logs/asgi.log
redirect_stderr=true

Please if someone could look over this, I’ve spend days with no progress.


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.

Want to learn more? Join the DigitalOcean Community!

Join our DigitalOcean community of over a million developers for free! Get help and share knowledge in Q&A, subscribe to topics of interest, and get courses and tools that will help you grow as a developer and scale your project or business.

Did you register your domain to allowed hosts in settings.py?