私は単純なApache vhostを持っています:
<VirtualHost *:80>
ServerName hello.local
ProxyPass / http://localhost:8810/
ProxyPassReverse / http://localhost:8810/
</VirtualHost>
Hello.localへのすべてのリクエストはhttp://localhost:8810/
にプロキシされます。私がやりたいことは、外部コマンドから返された値を使用して、http://localhost:8810/
に移動するHTTPリクエストにヘッダーを追加することです。何かのようなもの
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のドキュメントは here です。