Registro de encabezados de respuesta en el proxy inverso de Apache sin enviarlos al cliente

Registro de encabezados de respuesta en el proxy inverso de Apache sin enviarlos al cliente

Utilizamos varios servidores Apache como proxy inverso frente a numerosos servidores backend. Los servidores backend envían un encabezado de respuesta HTTP ("Cast") que contiene un nombre interno del servidor backend.

En el proxy inverso, me gustaría registrar el contenido del encabezado de respuesta del servidor backend y evitar que el encabezado se envíe al cliente.

Registrar el encabezado es simple insertándolo %{Cast}oen nuestra LogFormatconfiguración personalizada. Además, evitar que el encabezado se envíe al cliente es fácil mediante el usoHeader unset Cast

El único problema es que al desarmar el encabezado ya no se puede registrar.

¿Hay alguna manera de almacenar el encabezado de respuesta del backend en una variable, desarmar el encabezado y registrar la variable?

Notas

  • Los servidores Apache que se utilizan como servidores proxy inversos son Apache 2.2 en RHEL 6 y 2.4 en RHEL7.
  • Las reglas de proxy inverso utilizan ProxyPassoRewriteRule ... [P]

Respuesta1

En el pasado, he usado una entrada VirtualHost intermedia como solución alternativa para situaciones similares en las que ciertas directivas no funcionaban bien juntas:

Su configuración actual puede verse así:

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

Modifíquelo para que apunte al host virtual intermedio y elimine su encabezado de las respuestas:

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

y un nuevo host virtual donde aún puedes registrar tus encabezados de 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>

información relacionada