Nginx add_header pour une page 50 *


19

J'essaie actuellement d'obtenir que nginx ajoute un en-tête à la réponse lorsqu'il envoie une sorte d'erreur 50 *. J'ai déjà une directive add_header sur le bloc http, et qui est respectée pour toutes les demandes, sauf qu'il semble que des erreurs. J'ai également essayé ce qui suit dans l'un de mes vhosts:

location /mediocregopheristhecoolest {
    add_header X-Test "blahblahblah";
    return 502;                                                                                                    
}       

Aller à cette page me donne un 502, mais pas d'en-tête. Est-ce simplement quelque chose que nginx ne fait pas, ou est-ce que je le fais mal?


Pourriez-vous publier la sortie de $ curl -I <url> // mediocregopheristhecoolest
Chida

Réponses:


21

La documentation indique que add_header "ajoute le champ spécifié à un en-tête de réponse à condition que le code de réponse soit égal à 200, 204, 206, 301, 302, 303, 304 ou 307. Une valeur peut contenir des variables." Cela ne fonctionne donc pas avec un 502.

J'ai oublié d'ajouter que vous pouvez utiliser le module plus d'en-têtes tiers pour ajouter des en-têtes à d'autres codes. Vous devrez probablement recompiler pour l'ajouter, cependant.


Voir le commentaire de marat: la nouvelle version de nginx prend en charge la définition de l'en-tête indépendamment du code de réponse
Laurens Rietveld

44

Depuis Nginx 1.7.5, vous pouvez utiliser alwayspour ajouter un en-tête quel que soit le code de réponse:

add_header X-Test "blahblahblah" always;

1
Frustrant, la version dans le référentiel Debian est actuellement obsolète (1.6.x), mais nginx maintient son propre référentiel avec la dernière version stable (1.8.x en ce moment).
kungphu

Si vous souhaitez mettre à niveau un système Debian déjà fonctionnel, les rétroportages Debian sont plus sûrs ... packages.debian.org/jessie-backports/httpd/nginx Le paquet en amont utilise une organisation de paquet différente (peut entraîner des temps d'arrêt au lieu du mécanisme de mise à niveau lisse de nginx) ). Et son script postrm supprime les journaux. Et quelques autres petites différences ...
Lajos Veres
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.