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