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}o
en nuestra LogFormat
configuració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
ProxyPass
oRewriteRule ... [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>