简体   繁体   中英

Django Bad Request(400) Error in Deployment with Apache/NginX

I'm trying to lunch my app on VPS in Debug=False mode. Debug=True works fine but when I change it to false I got this error. I'm using Apache for rendering python pages and Nginx to serve my static files. I tried using this [answer]: Debugging Apache/Django/WSGI Bad Request (400) Error but it's not working at least for me. And this is my wsgi config:

#wsgi.py
import os
import sys

os.environ['DJANGO_SETTINGS_MODULE'] = 'example.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
path = '/var/www/example'
if path not in sys.path:
    sys.path.append(path)

And also I've added below code to my settings file:

ALLOWED_HOSTS = [
    '.example.com', # Allow domain and subdomains
    '.example.com.', # Also allow FQDN and subdomains
]

To discover your problem, first in settings.py set ALLOWED_HOSTS temporarily to:

ALLOWED_HOSTS = '*'

And then in somewhere in your view , try to print out and see output of this command:

print(request.META['HTTP_HOST']) # or print(request.get_host())

Then according to output, set that (just domain of it as an list) to your ALLOWED_HOSTS .

Notes:

  • Use ALLOWED_HOSTS = '*' may have security issue for you, read about that here .

  • After every change you need to restart your service(apache/nginx).

I've had the same problem with my cyrillic domain.

I've added punicode representation of my domain to ALLOWED_HOSTS, and that solved the problem.

Maybe this should be sent as a bug to Django, but I didn't dig much into that (it could be an issue of my hosting configuration), just ab (and of course browser). The problem was also intermittent for me (usually worse than what is shown below with ab).

Without punicode

Complete requests: 20 Failed requests: 3

while with punicode

Complete requests: 20 Failed requests: 0

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM