Apacheサーバー2.4.6とheaders_moduleを使用して、環境変数**でカスタムHTTPヘッダーを設定しようとしています。
ポート80のHTTP VHost内で作業しています。
すべてが次のような基本的な例で期待どおりに機能します。
Header set MyHeader "%D %t"
Mod_headersのApacheドキュメントを読みました: https://httpd.Apache.org/docs/2.4/en/mod/mod_headers.html#header
%{ENVVARNAME}e
を使用して環境変数にアクセスできると言われています
(ENVVARNAMEでENV変数の名前)
私は他の投稿も読んでいますが、実際の動作する答えはありません: Apacheは環境変数を使用してカスタムヘッダーを設定しました
しかし、私の問題は、HOSTNAME環境値のようにApacheサーバーを識別するよりもヘッダーを追加することです。
Header Set X-Serv %{HOSTNAME}e
成功しません:値の代わりに常にX-Serv:{null}を表示します
SetEnv myvar ${HOSTNAME} Header set X-Serv %{myvar}e
成功しません:HTTPヘッダーに表示されます:X-Serv:%{myvar} e
私は他のさまざまな組み合わせも試しました:
注意:HOSTNAME環境変数が存在し、httpdプロセスを所有するApacheユーザーの 'env'コマンドに表示されます
何か案が?
それを機能させる方法を見つけました:
モジュールがアクティブ化されていることを確認する(mod_headers)、または必要に応じてアクティブ化する
a2enmod headers
/ etc/Apache2/envvarsに追加
export HOSTNAME=`uname -n`
<VirtualHost>
句
Header set apachehost ${HOSTNAME}
Httpdサービスを再起動またはリロードします
service Apache2 restart
PassEnv
ディレクティブ を使用して、使用するシステム環境変数を宣言する必要があります
実際の例は次のとおりです。
PassEnv HOSTNAME
Header Set X-Serv %{HOSTNAME}e
1.モジュールがアクティブ化されていることを確認(mod_headers)または必要に応じてアクティブ化
a2enmod headers
2./etc/Apache2/envvarsに追加
export HOSTNAME1='uname -n'
または'hostname'
3.in <VirtualHost _default:443>
句
PassEnv HOSTNAME1
Header set X-Server "%{HOSTNAME1}e"
4. httpdサービスを再起動またはリロードします
service Apache2 restart