Nginx add_header для страницы 50 *

19

В настоящее время я пытаюсь заставить nginx добавить заголовок к ответу, когда он отправляет какую-то ошибку 50 *. У меня уже есть директива add_header в блоке http, и она соблюдается для всех запросов, за исключением ошибок. Я также попробовал следующее в одном из моих vhosts:

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

Переход на эту страницу дает мне 502, но без заголовка. Это просто то, что nginx не делает, или я делаю это неправильно?

Посредственный суслик
источник
Не могли бы вы опубликовать вывод $ curl -I <url> // mediocregopheristhecoolest
Чида

Ответы:

21

В документации говорится, что add_header «добавляет указанное поле в заголовок ответа при условии, что код ответа равен 200, 204, 206, 301, 302, 303, 304 или 307. Значение может содержать переменные». Так что это не работает с 502.

Я забыл добавить, что вы можете использовать сторонний модуль headers more для добавления заголовков к другим кодам. Вам, вероятно, придется перекомпилировать, чтобы добавить его, хотя.

kolbyjack
источник
Смотрите комментарий от marat: новая версия nginx поддерживает настройку заголовка независимо от кода ответа
Laurens Rietveld
44

Начиная с Nginx 1.7.5, вы можете alwaysдобавить заголовок независимо от кода ответа:

add_header X-Test "blahblahblah" always;
Marat
источник
1
К сожалению, версия в репозиториях Debian в настоящее время устарела (1.6.x), но nginx поддерживает свой собственный репозиторий с последней стабильной сборкой (прямо сейчас 1.8.x).
Кунгфу
Если вы хотите обновить уже работающую систему Debian, обратные порты Debian более безопасны ... packages.debian.org/jessie-backports/httpd/nginx В исходном пакете используется другая организация пакетов (может возникнуть некоторое время простоя вместо гладкого механизма обновления nginx). ). И его скрипт postrm удаляет логи. И пара других небольших различий ...
Верес