Apache HTTP サーバ バージョン 2.0

Apache > HTTP サーバ > ドキュメンテーション > バージョン 2.0

# バインド

Apache が使用するアドレスとポートの設定をします。

### 参照

- バーチャルホスト
- DNS の問題

## 概要

関連モジュール | 関連ディレクティブ
--- | ---

- `core`
- `mpm_common`

- `VirtualHost`
- `Listen`

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 [fe80::a00:20ff:fea7:ccea]:80`

## IPv6 の特記事項

APR が IPv6 をサポートする場合は、Apache はデフォルトで IPv6 を listen するソケットを作ります (例えば Listen ディレクティブで IP アドレスが無指定の場合)。 つまり、APR が IPv6 をサポートしている場合、

`Listen 80`

は、次と同じ意味になります。

`Listen [::]:80`

APR が IPv6 をサポートしていない場合は、

`Listen 80`

は、次と同じ意味になります。

`Listen 0.0.0.0:80`

NetBSD 等のいくつかのプラットホームでは、IPv6 のワイルドカードアドレス (「::」) のバインドでは IPv4 インターフェースにコネクションを張れません。 このような状況では、次のように複数の Listen ディレクティブが必要になります。

`Listen 0.0.0.0:80
Listen [::]:0`

Apache は現在これを自動検出することができないので、 そのような場合は Listen 命令文は管理者が手動で編集しないといけません。

## バーチャルホストに対してどう働くのか

Listen でバーチャルホストが実装されるわけではありません。 Listen は単にメインサーバにどのアドレスとポートを listen すべきかを 教えるだけです。 `<VirtualHost>` ディレクティブが使われない場合は、 受け入れたリクエストすべてに対して全く同じ挙動をします。 しかしながら `<VirtualHost>` を使って、 一つ以上のアドレスやポートに対して異なる挙動をするように 指定することができます。 VirtualHost を実装するには、使用するアドレスとポートを まず初めにサーバに通知しなければなりません。 そして、その指定したアドレスとポートでの このバーチャルホストの挙動を設定するために、 `<VirtualHost>` セクションを作ります。もし `<VirtualHost>` が listen していないアドレスとポートに対して 設定されてしまうと、 それにはアクセスできないということに注意してください。