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}o
em nossa LogFormat
configuraçã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
ProxyPass
ouRewriteRule ... [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>