Apache サーバー 2.4.6 と headers_module を使用して、環境変数** を使用してカスタム HTTP ヘッダーを設定しようとしています。
私はポート 80 の HTTP VHost 内で作業しています。
次のような基本的な例では、すべてが期待どおりに動作します。
Header set MyHeader "%D %t"
私は mod_headers の Apache ドキュメントを読みました:ヘッダー
環境変数にアクセスするには、
%{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」コマンドに表示されます。
何か案が?
答え1
どのシステム環境変数を使用可能にするかを宣言する必要があります。PassEnv
指令
実際の例は次のようになります。
PassEnv HOSTNAME
Header Set X-Serv %{HOSTNAME}e
答え2
動作させる方法を見つけました:
モジュールがアクティブになっていることを確認する (mod_headers)、または必要に応じてアクティブにする
a2enmod headers
/etc/apache2/envvarsに以下を追加
export HOSTNAME=`uname -n`
<VirtualHost>
条項内のHeader set apachehost ${HOSTNAME}
httpd サービスを再起動またはリロードする
service apache2 restart
答え3
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