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?

Gopher médiocre
la source
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.

kolbyjack
la source
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;
marat
la source
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