web-dev-qa-db-ja.com

環境変数を含むApacheカスタムヘッダー

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

  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
S. Di Cioccio

それを機能させる方法を見つけました:

  • モジュールがアクティブ化されていることを確認する(mod_headers)、または必要に応じてアクティブ化する

    a2enmod headers
    
  • / etc/Apache2/envvarsに追加

    export HOSTNAME=`uname -n`
    
  • <VirtualHost>

    Header set apachehost ${HOSTNAME}
    
  • Httpdサービスを再起動またはリロードします

    service Apache2 restart
    
1
S. Di Cioccio

PassEnvディレクティブ を使用して、使用するシステム環境変数を宣言する必要があります

実際の例は次のとおりです。

PassEnv HOSTNAME
Header Set X-Serv %{HOSTNAME}e
1
MoeBrowne

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

1
user536901