バインド - Apache HTTP サーバ

Apache HTTP サーバ バージョン 2.2

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

# バインド

Available Languages: de | en | fr | ja | ko

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 [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 では、システム全体としてのポリシーとの整合性から、 デフォルトでは使用不可に設定されています。 これらのデフォルトで使用不可のプラットホームであっても、 特別な `configure` の 設定パラメータで Apache の挙動を変化させることができます。

一方で、Linux や Tru64 といったプラットホームで IPv4 と IPv6 の両方を扱うには、マップトアドレスを使用する以外の方法はありません。 IPv4 と IPv6 のコネクションを最小限のソケットで扱いたいのであれば、 IPv4 マップの IPv6 アドレスを使用する必要があり、 `--enable-v4-mapped` `configure` オプションを指定します。

`--enable-v4-mapped` は、 FreeBSD, NetBSD, OpenBSD 以外の全てのプラットホームでのデフォルトです。 ですから、おそらくお手元の Apache はこの設定でビルドされているでしょう。

プラットフォームや APR が何をサポートするかに関わらず、 IPv4 コネクションのみを扱うようにしたい場合は、 次の例のように全ての `Listen` ディレクティブで IPv4 アドレスを指定してください。

`Listen 0.0.0.0:80
Listen 192.170.2.1:80`

条件を満たすプラットホームで、Apache が IPv4 と IPv6 のコネクションを個別のソケットで扱うようにしたい場合 (つまり IPv4 マップのアドレスを無効にしたい場合) は、`--disable-v4-mapped` `configure` オプションを指定して、次のように個別指定の `Listen` ディレクティブを使用してください。 `--disable-v4-mapped` は、 FreeBSD, NetBSD, OpenBSD プラットホームでのデフォルトです。

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

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

Available Languages: de | en | fr | ja | ko