django Mauvaise demande 400: nginx/gunicorn




(2)

Comme j'avais le même problème (code d'erreur 400 en essayant de partager avec le partage vagabond), je tombe sur cette question. La réponse et les commentaires sont ALLOWED_HOSTS , car la solution évidente consiste à définir la liste ALLOWED_HOSTS , mais je la définissais déjà correctement (je pensais).

Je ne peux pas parler pour nginx comme je cours sur Apache2, mais voici ce qui a résolu le problème:

  1. Jetez un coup d'oeil au docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts pour trouver ce qui docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts le mieux à votre cas.

  2. Avec vagabond, vous pourriez trouver utile d'accepter tout le sous-domaine '.vagrantshare.com' , alors ajoutez simplement '.vagrantshare.com' (notez le point) à la liste ALLOWED_HOSTS .

  3. Je ne sais pas si c'est vraiment nécessaire, mais j'ai changé la date de wsgi.py fichier wsgi.py

    touch wsgi.py
    
  4. Comme j'utilise apache2, je devais redémarrer le service.

    sudo service apache2 restart
    

Et puis ça a fonctionné.

J'ai suivi ce tutoriel: http://blog.wercker.com/2013/11/25/django-16-part3.html et j'essaie juste de le faire fonctionner localement avec Vagrant pour le moment. Je n'essaie pas d'utiliser Wercker.

Une fois que tout est installé, j'essaie d'accéder au site Web, mais je reçois une erreur de demande incorrecte (400) à chaque fois. Je ne sais pas si cela est dû à un problème de nginx ou de gunicorn.

Ils ont tous deux une entrée de journal, donc au moins, je sais que la requête passe par gunicorn et n'est pas arrêtée au niveau nginx.

Où se situe le problème? Gunicorn? nginx?

Voici les bûches de gunicorn et de nginx.

Je vois que la favicon est manquante mais cela ne devrait pas empêcher la page d'être affichée correctement?

Gunicorn:

 >>> cat /var/local/sites/hellocities/run/gunicorn.error.log
10.0.0.1 - - [28/Jan/2014:07:05:16] "GET / HTTP/1.0" 400 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36"
10.0.0.1 - - [28/Jan/2014:07:09:43] "GET / HTTP/1.0" 400 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36"

Nginx:

>>> cat /var/log/nginx/hellocities-access.log
10.0.0.1 - - [28/Jan/2014:07:05:16 +0000] "GET / HTTP/1.1" 400 37 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36"
10.0.0.1 - - [28/Jan/2014:07:05:20 +0000] "GET /favicon.ico HTTP/1.1" 404 200 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36"
10.0.0.1 - - [28/Jan/2014:07:09:43 +0000] "GET / HTTP/1.1" 400 37 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36"
10.0.0.1 - - [28/Jan/2014:07:09:44 +0000] "GET /favicon.ico HTTP/1.1" 404 200 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36"

>>> cat /var/log/nginx/hellocities-error.log
2014/01/28 07:05:20 [error] 13886#0: *1 open() "/var/local/sites/hellocities/static/favicon.ico" failed (2: No such file or directory), client: 10.0.0.1, server: _, request: "GET /favicon.ico HTTP/1.1", host: "10.0.0.200"
2014/01/28 07:09:44 [error] 13886#0: *3 open() "/var/local/sites/hellocities/static/favicon.ico" failed (2: No such file or directory), client: 10.0.0.1, server: _, request: "GET /favicon.ico HTTP/1.1", host: "10.0.0.200"

J'ai eu le même problème et en ajoutant ALLOWED_HOSTS = ("yourdomain.com",) aux paramètres corrigés.

MISE À JOUR: il y a peu d'autres possibilités:

  1. Nginx (ou tout autre serveur Web que vous utilisez) ne transmet pas la variable $ host à l'application
  2. L'hôte contient des traits de soulignement

Voir les détails: https://blog.anvileight.com/posts/how-to-fix-bad-request-400-in-django/