Apache HTTP サーバ バージョン 2.4
Apache HTTP サーバは環境変数と呼ばれる、名前のついた 変数に情報を記憶する仕組みを提供しています。この情報はログ収集や アクセス制御などのいろいろな操作を制御するために使うことができます。 これらの変数は CGI スクリプトなどの外部プログラムと通信するためにも 使われます。この文書はそれらの変数の操作方法と使用方法をいくつか 紹介します。
これらの変数は環境変数と呼ばれていますが、オペレーティング システムによって制御されている環境変数と同じではありません。 実際は、これらの変数は Apache の内部構造の中に記憶され、操作されています。 それらは、CGI や SSI スクリプトに渡されたときだけ、実際の オペレーティングシステムの環境変数になります。サーバ自身が 実行されているオペレーティングシステムの環境を操作したい場合は、 オペレーティングシステムのシェルが提供している標準の環境変数の 操作方法を使わなければなりません。
関連モジュール | 関連ディレクティブ |
---|---|
Apache において環境変数を設定する一番基本的な方法は、
無条件に環境変数を設定する SetEnv
ディレクティブを使用することです。
PassEnv
ディレクティブにより、Apache が起動されたシェルの
環境変数を渡すこともできます。
より柔軟性を高めるために、mod_setenvif
で提供されているディレクティブを使用することで、リクエストの
特性に基づいて環境変数を設定することができます。例えば、特定のブラウザ
(User-Agent) のリクエストや特定の Referer [意図的な綴りです]
(訳注: 正しい綴りは referrer ですが、HTTP の仕様では Referer
となっています)ヘッダが見つかったときのみ変数を設定することができます。
mod_rewrite の RewriteRule
ディレクティブにおいて環境変数を設定する [E=...]
オプションを使用することで、
より柔軟な設定を行なうことができます。
mod_unique_id は、非常に限られた条件の下で
「すべて」のリクエストについて、一意であることが保証されている値を環境変数
UNIQUE_ID
に設定します。
Apache の設定ファイルで設定された環境変数とシェルから渡される 環境変数に加えて、CGI スクリプトと SSI ページには CGI の仕様で要求されている、 リクエストのメタ情報を持った環境変数の組が提供されます。
suexec
が使用されている場合、CGI スクリプトが起動するために、環境変数は安全な環境変数の組に整理されます。
この安全な環境変数の集合は、コンパイル時に suexec.c
で定義されます。SetEnv
はリクエスト処理の
段階の中でも遅くに実行されます。つまり
SetEnvIf
や
RewriteCond
などからは、変数がそこで設定されていることがわかりません。関連モジュール | 関連ディレクティブ |
---|---|