ポートベースの仮想ホストを設定していきます。
ポートベースでは、IPアドレスは同じとし、ポート番号だけでリクエストを振り分けて、表示するWebページを切り替えます。
今回は以下2つの仮想ホストを作成します。
- 172.16.0.10:80
- 172.16.0.10:81
それぞれの仮想ホストに届いたリクエストに対し、それぞれ異なるレスポンスを返すようにします。
テストページ作成
まずは仮想ホストごとにテストページを作成しましょう。
ドキュメントルートには以下を指定するものとします。
仮想ホスト | ドキュメントルート |
---|---|
172.16.0.10:80 | /var/www/html/ |
172.16.0.10:81 | /var/www/public_html/ |
# cd /var/www/html/ # vi index.html <html> <head><title>テストページ1</title></head> <body> <p>テストページ1(Port:80)</p> </body> </html>
# cd /var/www/public_html/ # vi index.html <html> <head><title>テストページ2(Port:81)</title></head> <body> <p>テストページ2(Port:81)</p> </body> </html>
httpd.confの編集
ポートベースの仮想ホストを設定します。
# cd /etc/httpd/conf # vi httpd.conf Listen 80 Listen 81 NameVirtualHost 172.16.0.10:80 NameVirtualHost 172.16.0.10:81 <VirtualHost 172.16.0.10:80> DocumentRoot /var/www/html ServerName www.sample.com:80 </VirtualHost> <VirtualHost 172.16.0.10:81> DocumentRoot /var/www/public_html ServerName www.sample.com:81 </VirtualHost>
まず、「Listen」ディレクティブにはApacheが待ち受けるポート番号を指定します。今回は80番、81番の2つのポートで待ち受けることにするため、2つ設定します。
次に「NameVirtualHost」ディレクティブを設定します。これは「名前ベースの仮想ホストを使用する」という宣言です。「172.16.0.10:80」と「172.16.0.10:81」の2つを宣言しています。(「ポートベースの仮想ホスト」の実体は名前解決を行なわない「名前ベースの仮想ホスト」ということです。)
「VirtualHost」セクションコンテナを使い、仮想ホストごとに個別の設定を行ないます。
Apacheは、リクエストヘッダーに含まれるHostフィールドを参照し、「VirtualHost」と一致するブロックを探します。一致したブロックが見つかった場合にはそのブロック内の設定が適用されます。
設定を反映させるため、Apacheを再起動します。
# service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]
以上で「httpd.conf」の設定は完了です。
ファイアウォール設定
今回は81番ポートも使用するため、ファイアウォールの設定も適宜変更します。ここでは前回の記事で設定した状態からの編集方法を記述します。
# iptables -I INPUT 6 -p tcp --dport 81 -j ACCEPT
上記で外部からの接続に81も許可しています。
続いて、設定を保存します。
# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
最後にiptablesの状態を確認します。
# service iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:81
7 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Webページを表示する
これで準備が整いました。早速、テストページを表示させてみます。
クライアントパソコンからブラウザを起動し、アドレスバーにURLを入力し、Enterキーを押してください。
「http://172.16.0.10/」にアクセスしたときは以下のテストページが表示されます。
「http://172.16.0.10:81」にアクセスしたときは以下のテストページが表示されます。
それぞれ別のWebページが表示されれば成功です。