Je reçois cette erreur de Nginx, mais je n'arrive pas à le comprendre! J'utilise codeigniter et j'utilise la base de données pour les sessions. Je me demande donc comment l'en-tête peut être trop gros. Existe-t-il de toute façon de vérifier ce qu'est l'en-tête? ou potentiellement voir ce que je peux faire pour corriger cette erreur?
Faites-moi savoir si vous avez besoin de moi pour mettre en place des fichiers de conf ou quoi que ce soit et je mettrai à jour à votre demande
2012/12/15 11:51:39 [error] 2007#0: *5778 upstream sent too big header while reading response header from upstream, client: 24.63.77.149, server: jdobres.xxxx.com, request: "POST /main/login HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", Host: "jdobres.xxxxx.com", referrer: "http://jdobres.xxxx.com/"
MISE À JOUR
J'ai ajouté ce qui suit dans conf:
proxy_buffer_size 512k;
proxy_buffers 4 512k;
proxy_busy_buffers_size 512k;
Et maintenant, je reçois toujours ce qui suit:
2012/12/16 12:40:27 [error] 31235#0: *929 upstream sent too big header while reading response header from upstream, client: 24.63.77.149, server: jdobres.xxxx.com, request: "POST /main/login HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", Host: "jdobres.xxxx.com", referrer: "http://jdobres.xxxx.com/"
Ajoutez ceci à votre http {}
du fichier nginx.conf normalement situé dans / etc/nginx/nginx.conf:
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
Ensuite, ajoutez ceci à votre bloc d'emplacement php, ce sera situé dans votre fichier vhost recherchez le bloc qui commence par location ~ .php $ {
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
Modifiez votre configuration nginx et changez/définissez les directives suivantes:
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
J'ai eu le même problème car j'utilise une configuration nginx + fcgiwrap:
location ~ ^.*\.cgi$ {
fastcgi_pass unix:/var/run/fcgiwrap.sock;
fastcgi_index index.cgi;
fastcgi_param SCRIPT_FILENAME /opt/nginx/bugzilla/$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
# attachments can be huge
client_max_body_size 0;
client_body_in_file_only clean;
# this is where requests body are saved
client_body_temp_path /opt/nginx/bugzilla/data/request_body 1 2;
}
et le client faisait une demande avec une URL d'environ 6 000 caractères (une demande de bugzilla).
location ~ ^.*\.cgi$ {
error_log /var/log/nginx/bugzilla.log debug;
# ...
}
Voici ce que j'ai obtenu dans les journaux:
2015/03/18 10:24:40 [debug] 4625#0: *2 upstream split a header line in FastCGI records
2015/03/18 10:24:40 [error] 4625#0: *2 upstream sent too big header while reading response header from upstream, client: 10....
Oui, vous pouvez! Je lisais Comment définir la longueur d'URL autorisée pour une demande nginx (code d'erreur: 414, uri trop grand) avant parce que je pensais "hé l'URL est trop longue" mais je recevais 502
plutôt que 414
.
Essayez # 1:
# this goes in http or server block... so outside the location block
large_client_header_buffers 4 8k;
Cela échoue, mon URL est de 6000 caractères <8k. Essayez # 2:
large_client_header_buffers 4 4k;
Maintenant, je ne vois pas de 502 Bad Gateway
plus et à la place je vois un 414 Request-URI Too Large
A fait des recherches et trouvé quelque part sur Internet:
Cela me suffisait:
location ~ ^.*\.cgi$ {
# holds request bigger than 4k but < 8k
fastcgi_buffer_size 8k;
# getconf PAGESIZE is 4k for me...
fastcgi_buffers 16 4k;
# ...
}
J'ai prouvé que cela est également envoyé lorsqu'un en-tête non valide est transmis. Les caractères non valides ou la mise en forme des en-têtes HTTP, l'expiration des cookies retardée de plus d'un mois, etc. entraîneront tous: en-tête envoyé un en-tête trop grand lors de la lecture de l'en-tête de réponse en amont
J'ai rencontré ce problème dans le passé (n'utilisant pas codeigniter mais cela se produit chaque fois que les réponses contiennent beaucoup de données d'en-tête) et je me suis habitué à peaufiner les tampons comme suggéré ici, mais récemment, j'ai été de nouveau mordu par ce problème et les tampons étaient apparemment correct .
Il s'est avéré que c'était la faute de spdy que j'utilisais sur ce projet particulier et que j'ai résolu en activant la compression des en-têtes spdy comme ceci:
spdy_headers_comp 6;