У меня простой apache vhost:
<VirtualHost *:80>
ServerName hello.local
ProxyPass / http://localhost:8810/
ProxyPassReverse / http://localhost:8810/
</VirtualHost>
Все запросы к hello.local перенаправляются на http://localhost:8810/
. Я бы хотел добавить заголовок к http-запросу, идущему на http://localhost:8810/
со значением, возвращаемым внешней командой. Что-то вроде
Header set MyHeader ${/usr/bin/an_external_program}
Любой способ добиться этого?
Ладно, я понял.
Прежде всего, сценарий, который выполняется и используется для получения значения для вставки в заголовок. Я создал это как /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
Конфигурация 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>
Серверная служба, работающая на http://localhost:8080/
получает customheader
со значением из скрипта.
Документация Apache об использовании внешней программы: Вот.