ポートベースによるドメインの分別
ポートベースによる設定方法
現在サーバは、www.sakura.ne.jp というサーバ名に対して、一つのIPアドレスを持っているとして、ポート番号 80 と 8080 で別々のページを表示したい場合の設定を行ってみます。
1 |
※ これから紹介するのは設定の方法です。
弊社はこの設定に関してサポートを 行う物では有りません。また、このマニュアルを見て設定を行い障害が発生した場合でも、責任を負いかねますのであらかじめご了承下さい。
また、このマニュアルは、Apacheの仕様は弊社でインストールしたデフォルトの状態であることが前提で記述されています。
※ 注意!
この方法は、環境によって左右される要因が多いためあまりお勧めできません。
|
この方法によるメリット
この方法も、手持ちのIPアドレスをすべて使用していても、設定が可能です。しかし、ポートには、ほかのプログラムが利用したりする事があるので、確認が必要です。
まず、ポート8080 で利用するディレクトリを"mkdir" コマンドで作成します。ポート8080で、ファイルをディレクトリとエラーログ・アクセスログを保存する場所を作成します。ディレクトリは、スーパーユーザ状態で作成すると、ファイルの書きこみ許可等を与えらず、ファイルのアップロードなどが出来なくなるので、ログイン時のアカウントは、"admin"で行います。
% cd /usr/home/admin
% mkdir htdocs
% mkdir logs
|
サーバコンフィギュレーション
以下の作業は、スーパーユーザで行います。
httpd.conf は /usr/local/apache/conf/ の中にあります。
・
・
Listen 80 通常のドメインで使う側のポート番号
Listen 8080 *1
・
・
<VirtualHost 192.168.0.1:80>
DocumentRoot /usr/local/apache/htdocs *2
ServerName www.sakura.ne.jp *3
ErrorLog /usr/local/apache/logs/ *4
CustomLog /usr/local/apache/logs/ *4
・
・
</VirtualHost>
<VirtualHost 192.168.0.1:8080>
DocumentRoot /usr/home/admin/htdocs *5
ServerName www.sub.sakura.ne.jp *6
ErrorLog /usr/home/admin/logs/error_log *7
CustomLog /usr/home/admin/logs/access_log *7
・
・
</VirtualHost>
|
*1) 分別するドメインで利用する側のポート番号。空いているポートを指定・追加
*2) *3 指定のドメインで表示させたいページを保存する場所
*3) 192.168.0.1:80 で指定するドメイン
*4) エラーログと、アクセスログの保管場所
*5) 分別するドメインで表示させたいページを保存する場所
*6) 192.168.0.1:8080 で指定するドメイン
*7) エラーログと、アクセスログの保管場所
|
ポート 80 で www.sakura.ne.jp に対するリクエストはメインサーバへのアクセスとして処理され、 ポート 8080 で www.sakura.ne.jp に対するリクエストはバーチャルホストへのアクセスとして処理されます。
また、ポート80のアドレスは www.sub.sakura.ne.jp/ になりポート8080 のアドレスはwww.sub.sakura.ne.jp:8080/ となります。
現在空いているポートの検出方法
サーバのソケットのポート番号は 65535 まであります。そのうち1024以下の番号はrootにしか使えません。また、そのうちのいくつかは、すでにいろんなサービスで予約されているため使えません。
そのほかの空いているポートは、先に要求があったものから順に占有して行きます。そのため、どこが空いているのかは、環境によって異なります。
空いているポートを調べるには、netstat コマンドを利用します。
現在どの番号が何に予約されているかは/etc/servicesというファイルを見ると分かります。このファイル中に表示されている番号のポートは使用できますが、予約されているデバイスを追加した場合、問題が発生します。
空きポートを検出する場合、netstatコマンドに、-n の引数をつけます。
netstat -an の実行結果から見る、空きポートの場所は以下の通りです。
% netstat -an
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
icmp 0 0 *.* *.*
tcp 0 197 210.155.142.82.23 210.155.86.150.1299 ESTABLISHED
tcp 0 0 *.80 *.* LISTEN
tcp 0 0 127.0.0.1.53 *.* LISTEN
tcp 0 0 192.168.0.1.53 *.* LISTEN
tcp 0 0 210.155.142.82.53 *.* LISTEN
tcp 0 0 *.25 *.* LISTEN
tcp 0 0 *.139 *.* LISTEN
tcp 0 0 *.513 *.* LISTEN
tcp 0 0 *.514 *.* LISTEN
tcp 0 0 *.23 *.* LISTEN
tcp 0 0 *.21 *.* LISTEN
tcp 0 0 *.111 *.* LISTEN
%
|
行頭(proto)が"tcp" で、行末(state)がLISTENになっている行はすでにほかのプロセスによって占有されていることを示します。そのため、これ以外のポートを選択するようにしてください。
|