Apache HTTP サーバ バージョン 2.0
バインド
Apache が使用するアドレスとポートの設定をします。
概要
関連モジュール | 関連ディレクティブ |
---|---|
Apache は起動時に、ローカルマシンのあるポートあよびアドレス に対して接続し、リクエストが来るのを待ちます。 デフォルトではマシンのすべてのアドレスに対して listen します。 しかしながら、特定のポートか、特定のアドレスのみか、 またはそれらの組み合わせのいずれかを listen するようにする必要があります。 これは、異なる IP アドレス、ホスト名、ポートに対する Apache の応答方法を決定するバーチャルホスト機能と組み合わせて使われます。
Listen
ディレクティブで、特定のポートやアドレス・ポートの組からのみ入ってくる
リクエストを受け付けるようにできます。
もしポート番号のみが Listen
ディレクティブで指定された場合は、
すべてのインターフェースの与えられたポート番号を
listen します。 IP アドレスがポート番号と同時に与えられた場合は、
サーバは与えられたポートとインターフェースを listen します。
複数の Listen ディレクティブを用いて
いくつかの listen するアドレスとポートを指定できます。
サーバはリストされたアドレスやポートからのすべてのリクエストに
対して応答します。
たとえば、ポート 80 と 8000 の両方に対しての接続を受け付けるには
Listen 80
Listen 8000
とします。 二つの指定されたインタフェースとポート番号に対しての接続を受け付けるには、
Listen 192.170.2.1:80
Listen 192.170.2.5:8000
とします。 IPv6 アドレスは、角括弧で次の例のように囲まなければいけません。
Listen [2001:db8::a00:20ff:fea7:ccea]:80
IPv6 の特記事項
多くのプラットホームで IPv6 がサポートされてきていて、 APR はこれらのほとんどで IPv6 をサポートしているので、 Apache は IPv6 ソケットを割り当てて IPv6 経由で送られてきたリクエストを扱うことができます。
IPv6 ソケットが IPv4 と IPv6 コネクションの両方を扱うことができるか どうかは、Apache 管理者にとって厄介な問題です。 IPv4 コネクションを IPv6 ソケットで扱う場合は、 IPv4 マップされた IPv6 アドレスを使用していて、 ほとんどのプラットホームではデフォルトで使用可能ですが、 FreeBSD, NetBSD, OpenBSD では、システム全体としてのポリシーとの整合性から、 デフォルトでは使用不可に設定されています。 これらのデフォルトで使用不可のプラットホームであっても、 特別な設定パラメータで Apache の挙動を変化させることができます。
IPv4 と IPv6 のコネクションを最小限のソケットで扱いたいのであれば、
IPv4 マップの IPv6 アドレスを使用する必要があり、
--enable-v4-mapped
configure オプションを指定して、単純に
Listen
ディレクティブで次のように設定します。
Listen 80
--enable-v4-mapped
では、Apache
の生成するデフォルトの設定ファイル中の
Listen
ディレクティブはこの形式を使用しています。
--enable-v4-mapped
は、
FreeBSD, NetBSD, OpenBSD 以外の全てのプラットホームでのデフォルトです。
ですから、おそらくお手元の Apache はこの設定でビルドされているでしょう。
プラットフォームや APR が何をサポートするかに関わらず、
IPv4 コネクションのみを扱うようにしたい場合は、
次の例のように全ての
Listen
ディレクティブで
IPv4 アドレスを指定してください。
Listen 0.0.0.0:80
Listen 192.170.2.1:80
IPv4 と IPv6 のコネクションを個別のソケットで扱うようにしたい場合
(つまり IPv4 マップのアドレスを無効にしたい場合)
は、--disable-v4-mapped
configure
オプションを指定して、次のように個別指定の
Listen
ディレクティブを使用してください。
Listen [::]:80
Listen 0.0.0.0:80
--disable-v4-mapped
では、Apache
の生成するデフォルトの設定ファイル中の
Listen
ディレクティブはこの形式を使用しています。
--disable-v4-mapped
は、
FreeBSD, NetBSD, OpenBSD プラットホームでのデフォルトです。
バーチャルホストに対してどう働くのか
Listen でバーチャルホストが実装されるわけではありません。
Listen は単にメインサーバにどのアドレスとポートを listen すべきかを
教えるだけです。
<VirtualHost>
ディレクティブが使われない場合は、
受け入れたリクエストすべてに対して全く同じ挙動をします。
しかしながら
<VirtualHost>
を使って、
一つ以上のアドレスやポートに対して異なる挙動をするように
指定することができます。
VirtualHost を実装するには、使用するアドレスとポートを
まず初めにサーバに通知しなければなりません。
そして、その指定したアドレスとポートでの
このバーチャルホストの挙動を設定するために、
<VirtualHost>
セクションを作ります。もし
<VirtualHost>
が listen していないアドレスとポートに対して
設定されてしまうと、
それにはアクセスできないということに注意してください。