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.