After adding my domain to ALLOWED_HOSTS in django settings I am still getting a 502 error. Not sure why my settings are not recognized.

October 12, 2017 92 views
Nginx Django Configuration Management Ubuntu 16.04

So, I created an Ubuntu droplet with nginx, gunicorn and django. I added my domain and when trying to access my django site I got a 502 error. I read in several places that adding my domain to ALLOWEDHOSTS should remedy the problem so I did that and still got the error. To make a long story that should have been shorter shorter I finally started gunicorn in the console and the stacktrace I am getting indicates that my domain probably needs to be added to ALLOWEDHOSTS but I already added it. After digging a little further I notice that there are three files that contain an ALLOWEDHOSTS variable. There is ./var/lib/digitalocean/settings.py, ./var/lib/digitalocean/allowhosts.py and /home/django/djangoproject/djangoproject/settings.py. So far I have attempted adding my domain into each of thes files and still recieve the same error. This is a stupid, really really frustrating error. Anyone have any suggestions or have the same issue?

1 comment
  • Nevermind, I had debug set to true in settings. I changed that now I am getting a 400 error I believe from nginx and it doesn't look like like I am not getting to gunicorn at all at this point.

1 Answer
bschreiber October 12, 2017
Accepted Answer

I figured out what the problem was. I didn't realize that at the bottom of my settings.py file ALLOWED_HOSTS was being overwritten when the IP addresses are looked up at runtime. Sooo, ALLOWED_HOSTS appears near the beginning of the file which contains the list of your supplied ip addresses and/or domain names and another one at the very end of the file which is set as follows:

Find out what the IP addresses are at run time This is necessary because otherwise Gunicorn will reject the connections

def ipaddresses():
ip
list = []
for interface in netifaces.interfaces():
addrs = netifaces.ifaddresses(interface)
for x in (netifaces.AF_INET, netifaces.AFINET6):
if x in addrs:
ip
list.append(addrs[x][0]['addr'])
return ip_list

Discover our IP address

ALLOWED_HOSTS = ip_addresses()

I had to change ALLOWED_HOSTS = ip_addresses() to ALLOWED_HOSTS += ip_addresses() so that my entries near the beginning of the file weren't overwritten.

  • And apologies for not properly escaping the underscores in the entries above. Forgot about markdown weirdness.

Have another answer? Share your knowledge.