Registrando cabeçalhos de resposta no proxy reverso do Apache sem enviá-los ao cliente

Registrando cabeçalhos de resposta no proxy reverso do Apache sem enviá-los ao cliente

Usamos vários servidores Apache como proxy reverso na frente de vários servidores back-end. Os servidores backend enviam um cabeçalho de resposta HTTP ("Cast") que contém um nome interno do servidor backend.

No proxy reverso, gostaria de registrar o conteúdo do cabeçalho de resposta do servidor backend e evitar que o cabeçalho seja enviado ao cliente.

Registrar o cabeçalho é simples com a inserção %{Cast}oem nossa LogFormatconfiguração personalizada. Além disso, é fácil evitar que o cabeçalho seja enviado ao cliente, usandoHeader unset Cast

O único problema é que ao desarmar o cabeçalho ele não pode mais ser registrado.

Existe uma maneira de armazenar o cabeçalho de resposta do back-end em uma variável, desmarcar o cabeçalho e registrar a variável?

Notas

  • Os servidores Apache usados ​​como proxies reversos são Apache 2.2 no RHEL 6 e 2.4 no RHEL7
  • As regras de proxy reverso usam ProxyPassouRewriteRule ... [P]

Responder1

No passado, usei uma entrada intermediária do VirtualHost como solução alternativa para situações semelhantes, quando certas diretivas não funcionavam bem juntas:

Sua configuração atual pode ser semelhante a:

<VirtualHost *:80>
   ServerName www.example.com
   ProxyPass /app http://app.example.com/app
   ProxyPassReverse /app http://app.example.com/app
</VirtualHost>

Modifique isso para apontar para o host virtual intermediário e retire seu cabeçalho das respostas:

<VirtualHost *:80>
   ServerName www.example.com
   ProxyPass /app http://localhost:8000/app
   ProxyPassReverse /app http://localhost:8000/app
   Header unset Cast
</VirtualHost>

e um novo host virtual onde você ainda pode registrar seus cabeçalhos do 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>

informação relacionada