### Apache HTTP Server

# Apache が使用するアドレスとポートの設定

Apache は起動時に、ローカルなマシンのあるポートおよびアドレス に対して接続し、リクエストが来るのを待ちます。 デフォルトでは、マシン上のすべてのアドレス、およびサーバ設定ファイルの `Port` ディレクティブで設定されたポートに対して listen します。 しかし、複数のポートを listen する、指定されたアドレスに限って listen する、あるいはそれらを組み合わせて設定することも可能です。 これは、異なる IP アドレス、ホスト名、ポートに対する Apache の応答方法を決定するバーチャルホスト機能と組み合わせて使われます。

Apache が listen するアドレスおよびポートを限定するために使われる ディレクティブが二つあります。

- BindAddress は、サーバが単一のアドレスを listen するように限定します。 異なる IP アドレスを listen させた複数の Apache を同一マシン上で動作させることができるようにするために使用できます。
- Listen は単一の Apache サーバが複数のアドレス/ポートを listen するために使われます。

### BindAddress

構文: BindAddress [ * | IP アドレス | ホスト名 ]
デフォルト:`BindAddress *`
コンテキスト:サーバ設定ファイル
ステータス:コア

サーバを、特定のアドレスだけにバインドします。 引数が * (アスタリスク) の場合は、現在サーバ上で有効なすべての インタフェースにバインドします。ポートは `Port` ディレクティブでの設定が使われます。BindAddress は一つだけ使えます。

### Listen

構文:Listen [ポート | IP アドレス:ポート ]
デフォルト: `none`
コンテキスト:サーバ設定ファイル
ステータス:コア

`Listen` ディレクティブは `BindAddress` および `Port` ディレクティブの代わりとして使うこともできます。 これにより特定のポートまたはアドレスとポートの組合わせに対しての リクエストをサーバが受け付ける (listen する) ようにします。 ポート番号だけの、最初の書式を使った場合、`Port` ディレクティブで設定されたポートではなくサーバ上で有効なすべての インタフェースに対して、ここで設定されたポートを listen します。 ポートと共に IP アドレスを指定した場合は、指定されたポートと インタフェースに対して listen します。

複数の Listen ディレクティブにより、listen するアドレスとポートを いくつも指定することも出来ます。 リストされたアドレスとポート全てに対して応答します。

例えば、ポート 80 と 8000 の両方に対しての接続を受け付けるには

       Listen 80
       Listen 8000

とします。 2 つの指定されたインタフェースとポート番号に対しての接続を受け付けるには

       Listen 192.170.2.1:80
       Listen 192.170.2.5:8000

とします。

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

`BindAddress` と `Listen` はバーチャルホストを行なう わけではありません。それらはメインの Apache デーモンプロセスがどのアドレス をバインドし、どのポートを listen するのかということを指定します。 <VirtualHost> ディレクティブが全く使われない場合は、受け付けたリクエスト全てに対して 同じ動作をします。しかし、<VirtualHost> を使って一つあるいは複数の アドレスおよびポートに対して異なる動作をさせることも出来ます。 バーチャルホストを行なうには、サーバには次のことが必要です。

- 目的のアドレスとポートを `Listen` するように指示されている
- 指定されたポートとアドレスに対して、 バーチャルホストの振る舞いを設定するために <VirtualHost> セクションが作られている

サーバで listen していないアドレスおよびポートを <VirtualHost> で指定した場合、アクセスできないことに注意してください。

## 関連項目

バーチャルホスト、BindAddress ディレクティブ、Port ディレクティブ、DNS の問題、および<VirtualHost> セクションの文書も参照してください。

### Apache HTTP Server