Agregar un encabezado personalizado a las solicitudes de ProxyPass

9

Tengo un simple apache vhost:

<VirtualHost *:80>
  ServerName hello.local

  ProxyPass / http://localhost:8810/
  ProxyPassReverse / http://localhost:8810/
</VirtualHost>

Todas las solicitudes a hello.local se envían por proxy http://localhost:8810/. Lo que me gustaría hacer es agregar un encabezado a la solicitud http http://localhost:8810/con un valor devuelto por un comando externo. Algo como

Header set MyHeader ${/usr/bin/an_external_program}

¿Alguna forma de lograr esto?

Simón
fuente
¿Desea ejecutar este programa externo durante cada solicitud?
sciurus
Si. O también podría ser una "subrequest": un valor devuelto por un script cgi o algo similar. Soy consciente de las implicaciones de rendimiento.
Simon

Respuestas:

9

Ok lo tengo

En primer lugar, el script que se ejecuta y que se usa para obtener el valor para insertar en el encabezado. Creé esto como /opt/apache/debug.sh:

#!/bin/bash

#this script just loops forever and outputs a random string
#every time it receives something on stdin

while read
do
        cat /dev/urandom|head -c12|base64
done

Configuración de Apache:

<VirtualHost *:80>
        ServerName light.nik

        RewriteEngine On

        RewriteMap doheader prg:/opt/apache/debug.sh
        RewriteRule (.*) - [E=customheader:${doheader:},P]

        RequestHeader set customheader %{customheader}e

        ProxyPass / http://localhost:8080/
        ProxyPassReverse / http://localhost:8080/
</VirtualHost>

El servicio de fondo que se ejecuta http://localhost:8080/recibe el customheadercon el valor del script.

La documentación de Apache sobre el uso de un programa externo está aquí .

Simón
fuente