Welcome! Log In Create A New Profile

Advanced

Re: Наследование директив proxy_hide_header и proxy_pass_header

Maxim Dounin
July 24, 2023 03:24PM
Hello!

On Mon, Jul 24, 2023 at 06:42:14PM +0300, Gena Makhomed wrote:

> Здравствуйте, All!
>
> Наследование директив proxy_hide_header и proxy_pass_header
> не работает ожидаемым образом, nginx 1.25.1
> конфиг:
>
> http {
>
> proxy_pass_header Content-Disposition;
>
> server {
>
> server_name sentry.example.com;
>
> location / {
> proxy_hide_header Content-Disposition;
> proxy_pass http://172.17.110.100:9000;
> }
> }
> }
>
> Директива proxy_hide_header не работает в такой конфигурации,
> - заголовок Content-Disposition присутствует в ответе сервера.
>
> Если закомментировать директиву proxy_pass_header
> на уровне http - только после этого начинает нормально
> работать директива proxy_hide_header на уровне location.
>
> Это ошибка в коде nginx, что наследование не работает ожидаемым образом,
> или это ошибка в документации к nginx, что это явно не оговорено,
> или же это ошибка в моем понимании документации nginx?

Насколько я вижу, каких-либо специальных условий наследования для
proxy_pass_header и proxy_hide_header в документации не указано.
Соответственно, по общему правилу это два разных списка и они
наследуются независимо:

- список заголовков, которые нужно спрятать, определяется
директивами proxy_hide_header; список наследуется с предыдущего
уровня, если на текущем уровне не определены директивы
proxy_hide_header.

- список спрятанных заголовков, которые тем не менее нужно
передать клиенту, определяется директивами proxy_pass_header;
список наследуется с предыдущего уровня, если на текущем уровне
не определены директивы proxy_pass_header.

Наблюдаемое поведение, насколько я вижу, ожидаемому соответствует:
в случае наличия заголовка в списке proxy_pass_header он
передаётся клиенту, в случае отсутствия (и наличия в списке
proxy_hide_header) - не передаётся.

> Задача у меня такая - надо включить заголовок Content-Disposition
> для всех сайтов, за исключением одного сайта - sentry self-hosted,
> для того чтобы обойти баг, который присутствует в браузере Safari.
>
> Если я что-то делаю неправильно - как правильно решить эту задачу?
>
> Подробнее об этом баге в браузере Safari и о workaround, для него:
>
> https://github.com/getsentry/self-hosted/issues/2285#issuecomment-1647664859

Заголовок Content-Disposition отсутствует в proxy_hide_header по
умолчанию, так что для решения данной задачи будет достаточно
указать "proxy_hide_header Content-Disposition;" в конфигурации
проксирования для Sentry. Как, собственно, и предлагают по
ссылке.

--
Maxim Dounin
http://mdounin.ru/
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Наследование директив proxy_hide_header и proxy_pass_header

Gena Makhomed July 24, 2023 11:44AM

Re: Наследование директив proxy_hide_header и proxy_pass_header

Maxim Dounin July 24, 2023 03:24PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 76
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready