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 ALLOWED_HOSTS 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 ALLOWED_HOSTS but I already added it. After digging a little further I notice that there are three files that contain an ALLOWED_HOSTS variable. There is ./var/lib/digitalocean/settings.py, ./var/lib/digitalocean/allow_hosts.py and /home/django/django_project/django_project/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?
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!
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.
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
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 ip_addresses(): ip_list = [] for interface in netifaces.interfaces(): addrs = netifaces.ifaddresses(interface) for x in (netifaces.AF_INET, netifaces.AF_INET6): 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.
So, django has a settings.py file that it uses for application-wide configuration. In the settings file generated for my app I was setting the ALLOWED_HOSTS variable but then at the end of the file it was being overwritten. The following line at the end of the settings file:
ALLOWED_HOSTS += ip_addresses()
“appends” the output from the ip_addresses call to what I set ALLOWED_HOSTS to previously in the file.
Hi, there, I am having the same problem I believe. But I am very new here. Would you please elaborate on your solution, please? Thank you!