環境変数を使用した Apache カスタム ヘッダー

環境変数を使用した Apache カスタム ヘッダー

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サーバーを識別するヘッダーを追加することです。

  1. これを試してみた

Header Set X-Serv %{HOSTNAME}e

成功しませんでした: 値の代わりに常に X-Serv:{null} を表示します

  1. 私も試しました:

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

関連情報