Я хочу добавить настраиваемый заголовок для ответа, полученного от сервера за nginx.
Хотя он add_header
работает для ответов, обработанных nginx, он ничего не делает при proxy_pass
использовании.
nginx
http-headers
proxypass
Сорин
источник
источник
Ответы:
Существует модуль под названием HttpHeadersMoreModule, который дает вам больше контроля над заголовками. Он не поставляется с Nginx и требует дополнительной установки. С его помощью можно сделать что-то вроде этого:
Это «установит выходной заголовок сервера на пользовательское значение для любого кода состояния и любого типа контента». Он заменит уже установленные заголовки или добавит их, если они не установлены.
источник
Secure
иHttpOnly
флаги в ответный cookie ? Однако целевой файл cookie ответа имеет только файл cookiename
иexpire
атрибуты.add_header
работает так же хорошо,proxy_pass
как и без. Я только что создал конфигурацию, в которой использовал именно эту директиву. Я должен признать, что я тоже боролся с настройкой этого, хотя точно не вспомнил причину.Прямо сейчас у меня есть рабочая конфигурация, и она содержит (среди прочего) следующее:
Раньше nginx
1.7.5
add_header работал только с успешными ответами, в отличие от HttpHeadersMoreModule, упомянутого Себастьяном Гудманом в его ответе .Начиная с nginx,
1.7.5
вы можете использовать ключевое словоalways
для включения пользовательских заголовков даже в ответы об ошибках. Например:Ограничение: вы не можете переопределить
server
значение заголовка с помощьюadd_header
.источник
add_header X-Upstream $upstream_addr always;
X-Upstream: 10.10.10.10
vsX-Upstream: 53c2d28edefdf501ab7c92e02a0c1687
(md5, вероятно, бесполезен для маскировки инфраструктуры, но он передает идею).add_header
директивы. Их совсем не нужно отправлять.Как пишет Оливер:
Однако, как пишет Шейн, начиная с Nginx 1.7.5, вы должны пройти
always
, чтобы приступитьadd_header
к работе с сообщениями об ошибках, например:источник
Скрыть заголовок ответа, а затем добавить новое значение настраиваемого заголовка
Добавление заголовка
add_header
отлично работает с прокси-проходом, но если в ответе есть существующее значение заголовка, оно складывает значения.Если вы хотите установить или заменить значение заголовка (например, заменить
Access-Control-Allow-Origin
заголовок, чтобы он соответствовал вашему клиенту, чтобы разрешить совместное использование ресурсов из разных источников), вы можете сделать следующее:Таким образом, в
proxy_hide_header
сочетании сadd_header
дает вам возможность устанавливать / заменять значения заголовка ответа.Подобный ответ можно найти здесь, на ServerFault
ОБНОВИТЬ:
Примечание:
proxy_set_header
предназначен для установки заголовков запроса перед дальнейшей отправкой запроса, а не для установки заголовков ответа (эти атрибуты конфигурации для заголовков могут немного сбивать с толку).источник
Вы можете попробовать это решение:
В вашем
location
блоке, когда вы используете,proxy_pass
сделайте что-то вроде этого:Я не уверен, что это именно то, что вам нужно, но попробуйте немного поработать с этим методом, и, возможно, результат будет соответствовать вашей проблеме.
Также вы можете использовать эту комбинацию:
источник
location / { proxy_pass http://127.0.0.1:8080/; proxy_hide_header "Access-Control-Allow-Origin"; if ($http_origin ~* "^https://(example.com|www.example.com)$") { add_header Access-Control-Allow-Origin "$http_origin"; } }