私はApache 2.4を使用しており、プロキシパス用にconfファイル内で環境変数を使用しようとしています。これについて話しているスレッド [ Apache proxypass using a variable URL with interpolate ] があります。
RewriteEngine on
RewriteMap lowercase int:tolower
#This sets the variable to env:
RewriteRule ^ - [E=SERVER_NAME:${lowercase:%{SERVER_NAME}}]
#Now interpolate makes variables available for proxypass & proxypassreverse:
ProxyPassInterpolateEnv On
ProxyPass / ajp://${SERVER_NAME}:8009/ interpolate
ProxyPassReverse / ajp://${SERVER_NAME}:8009/ interpolate
しかし、これを自分で試してみると、「AH00111: 構成変数 ${SERVER_NAME} が定義されていません」というエラーが表示されます。つまり、Apache2.4 は ${SERVER_NAME} を環境変数ではなく設定変数として扱います。
また、このように、変数に mod_rewrite 構文を使用してみました。
ProxyPass / ajp://%{ENV:SERVER_NAME}:8009/ interpolate
ProxyPassReverse / ajp://%{ENV:SERVER_NAME}:8009/ interpolate
しかし、%{ENV:SERVER_NAME} はプレーンテキスト文字列として扱われ、有効な URL パスではないためエラーが発生しました。
構成変数は、サーバーの起動時に「定義」ブロックで定義されます。私が望むのは、mod_rewrite を使用して実行時に SERVER_NAME を変更することです。ProxyPassReverse ブロックも変数で動作させる必要があるため、mod_rewrite [P] 引数は使用できません。mod_rewrite は応答の書き換えを処理できないため、ProxyPassReverse の機能を模倣することはできません。
proxypass conf ディレクティブの補間で環境変数を使用する方法についてのアイデアはありますか?