Мы используем несколько серверов Apache в качестве обратного прокси перед многочисленными внутренними серверами. Внутренние серверы отправляют заголовок HTTP-ответа («Cast»), который содержит внутреннее имя внутреннего сервера.
В обратном прокси-сервере я хотел бы регистрировать содержимое заголовка ответа внутреннего сервера и предотвращать отправку заголовка клиенту.
Логирование заголовка просто с помощью вставки %{Cast}o
в нашем обычае LogFormat
конфигурация. Кроме того, легко предотвратить отправку заголовка клиенту, используя Header unset Cast
Единственная проблема в том, что при отключении заголовка его больше нельзя регистрировать.
Есть ли способ сохранить заголовок ответа серверной части в переменной, отключить заголовок и записать переменную?
Ноты
ProxyPass
или RewriteRule ... [P]
Раньше я использовал промежуточную запись VirtualHost в качестве обходного пути для подобных ситуаций, когда определенные директивы не работали вместе:
Ваша текущая конфигурация может выглядеть так:
<VirtualHost *:80>
ServerName www.example.com
ProxyPass /app http://app.example.com/app
ProxyPassReverse /app http://app.example.com/app
</VirtualHost>
Измените это так, чтобы он указывал на промежуточный виртуальный хост, и удалите заголовок из ответов:
<VirtualHost *:80>
ServerName www.example.com
ProxyPass /app http://localhost:8000/app
ProxyPassReverse /app http://localhost:8000/app
Header unset Cast
</VirtualHost>
и новый виртуальный хост, на котором вы все еще можете регистрировать свои заголовки Cast:
Listen 127.0.0.1:8000
<VirtualHost 127.0.0.1:8000>
ServerName localhost
ProxyPass /app http://app.example.com/app
ProxyPassReverse /app http://app.example.com/appp
LogFormat %{X-Forwarded-For}o %{Cast}o ...
</VirtualHost>