Apache HTTP サーバ バージョン 2.5

| 関連モジュール | 関連ディレクティブ |
|---|---|
httpd は起動時に、ローカルマシンのあるポートとアドレスに対して
バインドし、リクエストが来るのを待ちます。デフォルトでは
マシンのすべてのアドレスで待ち受けます。しかし、特定のポートのみ、
または選択したアドレスのみ、あるいはその両方の組み合わせで
待ち受けるように指定する必要がある場合もあります。これは多くの場合、
httpd が異なる IP アドレス、ホスト名、ポートに対して
どのように応答するかを決定するバーチャルホスト
機能と組み合わせて使用されます。
Listen
ディレクティブは、指定されたポートまたは
アドレスとポートの組み合わせでのみ受信リクエストを
受け付けるようサーバに指示します。
Listen
ディレクティブでポート番号のみが指定された場合、
サーバはすべてのインターフェースの指定されたポートで待ち受けます。
IP アドレスとポートが同時に指定された場合は、
サーバは指定されたポートとインターフェースで待ち受けます。
複数の Listen
ディレクティブを使って、待ち受けるアドレスとポートを
複数指定することができます。
サーバは指定されたアドレスとポートのいずれかからの
リクエストに応答します。
たとえば、すべてのインターフェースのポート 80 と ポート 8000 の両方で接続を受け付けるには、次のようにします:
Listen 80 Listen 8000
あるインターフェースではポート 80 で、別のインターフェースでは ポート 8000 で接続を受け付けるには、次のようにします
Listen 192.0.2.1:80 Listen 192.0.2.5:8000
IPv6 アドレスは、次の例のように角括弧で囲む必要があります:
Listen [2001:db8::a00:20ff:fea7:ccea]:80
httpd を再起動する際には、Listen
ディレクティブの変更に対して特別な配慮が必要です。再起動中、httpd は
サーバへの新しい接続試行に対する「Connection refused」エラーを
避けるために、(元の設定のまま)ポートをバインドしたままにします。
使用中の Listen
ディレクティブのセットに対して古い設定と競合する変更が行われた場合、
設定は失敗しサーバは終了します。
たとえば、次の設定から:
Listen 127.0.0.1:80
次の設定に変更すると失敗する可能性があります。なぜなら、 すべてのアドレスのポート 80 へのバインドは、 127.0.0.1 のみのポート 80 へのバインドと競合するからです。
Listen 80
このような設定変更を有効にするには、 サーバを停止してから起動する必要があります。
多くのプラットフォームで IPv6 が実装されてきており、 APR はこれらのほとんどで IPv6 をサポートしているので、 httpd は IPv6 ソケットを割り当てて IPv6 経由で送られてきたリクエストを処理することができます。
httpd 管理者にとって厄介な問題の一つは、IPv6 ソケットが
IPv4 と IPv6 の両方のコネクションを処理できるかどうかです。
IPv6 ソケットでの IPv4 コネクションの処理には
IPv4 マップド IPv6 アドレスが使用されますが、
これはほとんどのプラットフォームではデフォルトで許可されていますが、
FreeBSD、NetBSD、OpenBSD では、これらのプラットフォームの
システム全体のポリシーに合わせるため、
デフォルトでは無効になっています。
デフォルトで無効になっているシステムでも、
特別な configure パラメータで
httpd のこの動作を変更できます。
一方、Linux や Tru64 などのプラットフォームでは、
IPv6 と IPv4 の両方を処理する唯一の方法は
マップドアドレスを使用することです。
IPv4 マップド IPv6 アドレスの使用を必要とする
最小限のソケットで httpd に IPv4 と IPv6 のコネクションを
処理させたい場合は、--enable-v4-mapped configure
オプションを指定してください。
--enable-v4-mapped は FreeBSD、NetBSD、OpenBSD を除く
すべてのプラットフォームでのデフォルトですので、
おそらくお手元の httpd はこの設定でビルドされているでしょう。
プラットフォームや APR が何をサポートするかに関わらず、
httpd に IPv4 コネクションのみを処理させたい場合は、
次の例のようにすべての
Listen ディレクティブで
IPv4 アドレスを指定してください:
Listen 0.0.0.0:80 Listen 192.0.2.1:80
プラットフォームがサポートしており、httpd に IPv4 と
IPv6 のコネクションを別々のソケットで処理させたい場合
(つまり IPv4 マップドアドレスを無効にしたい場合)は、
--disable-v4-mapped configure
オプションを指定してください。--disable-v4-mapped は
FreeBSD、NetBSD、OpenBSD でのデフォルトです。
Listen の
オプションの第二引数 protocol は、
ほとんどの設定では必要ありません。
指定しない場合、ポート 443 では https が、
その他すべてのポートでは http がデフォルトになります。
プロトコルは、どのモジュールがリクエストを処理すべきかを決定し、
AcceptFilter
ディレクティブでプロトコル固有の最適化を適用するために使用されます。
非標準のポートで実行している場合にのみ、プロトコルを設定する
必要があります。たとえば、ポート 8443 で https
サイトを実行する場合:
Listen 192.170.2.1:8443 https
Listen
ディレクティブはバーチャルホストを実装するものではありません。
メインサーバにどのアドレスとポートで待ち受けるかを指示するだけです。
<VirtualHost>
ディレクティブが使われない場合、サーバは受け付けたすべてのリクエストに
対して同じように振る舞います。しかし、
<VirtualHost>
を使って、一つ以上のアドレスやポートに対して
異なる振る舞いを指定することができます。
VirtualHost を実装するには、まず使用するアドレスとポートで
サーバが待ち受けている必要があります。
そして、指定したアドレスとポートでのバーチャルホストの振る舞いを
設定するために
<VirtualHost>
セクションを作成します。
サーバが待ち受けていないアドレスとポートに対して
<VirtualHost>
が設定された場合、そのバーチャルホストにはアクセスできないことに
注意してください。