29 votes

Comment éviter les erreurs "upstream sent too big header" de nginx ?

J'utilise nginx, Phusion Passenger et Rails.

Je me heurte à l'erreur suivante :

upstream sent too big header while reading response header from upstream, client: 87.194.2.18, server: xyz.com, request: "POST /user_session HTTP/1.1", upstream: "passenger://unix:/tmp/passenger.3322/master/helper_server.sock

Il se produit sur le rappel d'un appel d'authentification à Facebook Connect.

Après avoir cherché sur Internet, j'ai essayé de modifier les paramètres de nginx, notamment proxy_buffer_size et large_client_header_buffers, sans résultat.

Comment puis-je déboguer cela ?

31voto

Rob Di Marco Points 18048

J'ai rencontré cette erreur récemment.

Depuis Passager 3.0.8 il y a maintenant un paramètre qui vous permet de définir les tampons et la taille des tampons. Vous pouvez donc maintenant faire

http {
    ...
    passenger_buffers 8 16k;
    passenger_buffer_size 32k;
}

Cela a résolu le problème pour moi.

28voto

Antiarchitect Points 707

Essayez d'ajouter ceci à la configuration :

http {
    ...
    proxy_buffers 8 16k;
    proxy_buffer_size 32k;
    }

24voto

Linus Unnebäck Points 1855

Peut-être qu'en ajoutant ceci, cela fonctionnera. Comment vous connectez-vous à upstream ? http, fastcgi ou autre chose ?

http {
    ...
    fastcgi_buffers 8 16k;
    fastcgi_buffer_size 32k;
}

6voto

tknew Points 1100
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;

1voto

ppostma1 Points 332

J'obtiens cette erreur, sur une page de 800 octets, avec 4 en-têtes. C'était une page de déconnexion pour supprimer les cookies. Pour faire expirer les cookies, je les faisais remonter à ma date de naissance. Cela n'a pas fonctionné dans nginx, ils doivent être expirés depuis moins d'un mois pour passer la validation et supprimer les cookies.
J'ai effectué une vérification en passant quelques autres en-têtes différents, mais invalides, de php-fpm à nginx et j'ai obtenu les mêmes résultats sur le client. Si nginx ne peut pas valider les en-têtes des serveurs en amont, il affiche cette erreur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X