Adicionar um cabeçalho personalizado às solicitações do ProxyPass

9

Eu tenho um simples apache vhost:

<VirtualHost *:80>
  ServerName hello.local

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

Todas as solicitações para hello.local são proxy para http://localhost:8810/. O que eu gostaria de fazer é adicionar um cabeçalho à solicitação http http://localhost:8810/com um valor retornado por um comando externo. Algo como

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

Alguma maneira de conseguir isso?

Simon
fonte
Deseja executar este programa externo durante cada solicitação?
sciurus
Sim. Ou também pode ser uma "sub-solicitação": um valor retornado por um script cgi ou algo semelhante. Estou ciente das implicações de desempenho.
Simon

Respostas:

9

OK, entendi.

Primeiro, o script que é executado e usado para obter o valor a ser inserido no cabeçalho. Eu criei isso 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

Configuração do 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>

O serviço de back-end em execução http://localhost:8080/recebe customheadero valor com o script.

A documentação do Apache sobre o uso de programa externo está aqui .

Simon
fonte