Mon site utilise nginx et le site de test avec des outils de test d'en-tête, par exemple. http://www.webconfs.com/http-header-check.php mais à chaque fois, il est indiqué que 400 requêtes incorrectes sont listées ci-dessous. Bien que toutes mes pages se chargent parfaitement dans le navigateur et quand je vois dans la console chrome, il indique le code d'état 200OK.
HTTP/1.1 400 Bad Request =>
Server => nginx
Date => Fri, 07 Sep 2012 09:40:09 GMT
Content-Type => text/html
Content-Length => 166
Connection => close
Je ne comprends vraiment pas quel est le problème avec la configuration de mon serveur?
Un peu de googler suggère d'augmenter la taille de la mémoire tampon en utilisant, et je l'ai augmenté à la suivante:
large_client_header_buffers 4 16k;
Les mêmes résultats persistent.
Quelqu'un peut-il me guider dans la bonne direction?
Comme l'a déclaré Maxim Dounin dans les commentaires ci-dessus :
Lorsque nginx renvoie 400 (demande incorrecte), il enregistre le motif en erreur log, au niveau "info". D'où un moyen évident de savoir ce qui se passe est de configurer error_log enregistrer les messages au niveau "info" et consulter le journal des erreurs lorsque essai.
Oui, changer le niveau de débogage error_to comme Emmanuel Joubaud le suggérait (modifier/etc/nginx/sites-enabled/default)
error_log /var/log/nginx/error.log debug;
Puis, après avoir restauré nginx, je suis entré dans le journal des erreurs avec mon application Python sous uwsgi:
2017/02/08 22:32:24 [debug] 1322#1322: *1 connect to unix:///run/uwsgi/app/socket, fd:20 #2
2017/02/08 22:32:24 [debug] 1322#1322: *1 connected
2017/02/08 22:32:24 [debug] 1322#1322: *1 http upstream connect: 0
2017/02/08 22:32:24 [debug] 1322#1322: *1 posix_memalign: 0000560E1F25A2A0:128 @16
2017/02/08 22:32:24 [debug] 1322#1322: *1 http upstream send request
2017/02/08 22:32:24 [debug] 1322#1322: *1 http upstream send request body
2017/02/08 22:32:24 [debug] 1322#1322: *1 chain writer buf fl:0 s:454
2017/02/08 22:32:24 [debug] 1322#1322: *1 chain writer in: 0000560E1F2A0928
2017/02/08 22:32:24 [debug] 1322#1322: *1 writev: 454 of 454
2017/02/08 22:32:24 [debug] 1322#1322: *1 chain writer out: 0000000000000000
2017/02/08 22:32:24 [debug] 1322#1322: *1 event timer add: 20: 60000:1486593204249
2017/02/08 22:32:24 [debug] 1322#1322: *1 http finalize request: -4, "/?" a:1, c:2
2017/02/08 22:32:24 [debug] 1322#1322: *1 http request count:2 blk:0
2017/02/08 22:32:24 [debug] 1322#1322: *1 post event 0000560E1F2E5DE0
2017/02/08 22:32:24 [debug] 1322#1322: *1 post event 0000560E1F2E5E40
2017/02/08 22:32:24 [debug] 1322#1322: *1 delete posted event 0000560E1F2E5DE0
2017/02/08 22:32:24 [debug] 1322#1322: *1 http run request: "/?"
2017/02/08 22:32:24 [debug] 1322#1322: *1 http upstream check client, write event:1, "/"
2017/02/08 22:32:24 [debug] 1322#1322: *1 http upstream recv(): -1 (11: Resource temporarily unavailable)
Ensuite, j’ai jeté un coup d’œil à mon journal d’Uwsgi et découvert que:
Invalid HTTP_Host header: 'www.mysite.local'. You may need to add u'www.mysite.local' to ALLOWED_HOSTS.
[pid: 10903|app: 0|req: 2/4] 192.168.221.2 () {38 vars in 450 bytes} [Wed Feb 8 22:32:24 2017] GET / => generated 54098 bytes in 55 msecs (HTTP/1.1 400) 4 headers in 135 bytes (1 switches on core 0)
Et l’ajout de www.mysite.local au fichier settings.py ALLOWED_CONFIGS a corrigé le problème :)
ALLOWED_HOSTS = ['www.mysite.local']
Une cause peut être un codage non valide dans la demande d'URL. Tels que% passés non codés.
Juste pour clarifier, dans /etc/nginx/nginx.conf , vous pouvez mettre la ligne au début du fichier
error_log /var/log/nginx/error.log debug;
Et puis redémarrez nginx:
Sudo service nginx restart
De cette façon, vous pouvez détailler ce que fait nginx et pourquoi il renvoie le code d’état 400.
normalement, la méthode de Maxim Donnie peut trouver la raison. Mais j'ai rencontré une mauvaise requête 400 ne sera pas connecté à err_log. J'ai trouvé la raison de l'aide avec tcpdump