仮想ホストの記事一覧

ポートベースの仮想ホストを設定する

ポートベースの仮想ホストを設定していきます。
ポートベースでは、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/」にアクセスしたときは以下のテストページが表示されます。
テストページ1

「http://172.16.0.10:81」にアクセスしたときは以下のテストページが表示されます。
テストページ2

それぞれ別のWebページが表示されれば成功です。

2015年11月22日(日)|Apache2.2構築

Apacheの仮想ホスト機能を使用する

Apacheには1台サーバーで複数のWebサイトを公開するための仮想ホスト(バーチャルホスト)という機能があります。

仮想ホスト機能により、複数のURLを使って、1台のサーバーで同一あるいはそれぞれ別の公開ディレクトリへアクセスさせることができます。

仮想ホスト機能

1台のサーバー上でインターネットに複数のサイトを公開する、あるいは、開発環境で複数の案件のアプリケーションを同一サーバーに設置したい場合など、使い方は様々でたいへん便利な機能です。

1台のサーバーで複数のWebサイトを公開する

仮想ホストは1台のサーバーを複数のサーバーであるかのように見せる機能です。複数のサーバーに見せるための手段として以下2つの方法があります。

  • 名前ベースの仮想ホスト
  • IPアドレスベースの仮想ホスト

通常はWebサーバーを運用するのにドメインの数以上のサーバーが必要となりますが、上記方法を使えば、1台のサーバーで複数のWebサイトを運用することができ、サーバーの数を減らし運用のコストを下げられるなどのメリットがあります。

では、それぞれの仕組みについて順に見ていきましょう。

名前ベースの仮想ホスト

名前ベースバーチャルホストは、利用するドメイン名すべてに同じIPアドレスを使用します。
WebブラウザはWebサイトへアクセスする際、アクセス先のホスト名をリクエストヘッダー内のHostフィールドに指定することが必須とされています。ApacheはHostフィールドを参照し、アクセス先のホストを識別します。

名前ベースの仮想ホストは、1つのサーバーに必要なIPアドレスが1つで済み、複数の異なるURLでアクセスできる構成を、比較的容易に設定できます。

IPベースの仮想ホスト

IPベースの仮想ホストは、利用するドメイン名ごとにIPアドレスを用意し、1つのサーバーに複数のIPアドレスを割り当て、IPアドレスごとに仮想ホストを設定する方法です。

クライアントが接続したいドメインごとに異なるIPアドレスへ接続してくるため、Apacheは接続先IPアドレスを見てアクセス先のホストを識別します。

汎用性の高い方法ですが、一般的にIPアドレスの取得は高コストであり、比較的敷居が高い方法です。

ただ、接続先ホストを識別するための識別子はIPアドレスだけではありません。IPアドレスに加えてポート番号も含めて識別できます。
そのため、IPアドレスは同じにし、ポート番号だけでリクエストを振り分けて表示するサイトを切り替えることもできます。この方法を上記2つの方法と区別して、ポートベースの仮想ホストと呼ばれることもあります。

ポートベースの仮想ホスト

ドメインもしくはIPアドレスを複数取得する必要がないこの方法が最も容易に仮想ホストを構成できます。

次回はそのポートベースの仮想ホストの設定方法について見ていきます。

2015年11月21日(土)|Apache2.2構築

サイト内検索

カテゴリー

  • Apache2.2構築
  • BIND DNSサーバー構築
  • Linux基礎知識
  • NTPサーバー構築
  • vsftpd FTPサーバー構築

サイト情報

  • 当サイトについて
  • 免責
  • お問い合わせフォーム
  1. CentOSサーバー構築入門
  2. 仮想ホストの記事一覧

CentOSサーバー構築入門

CentOSによるサーバー構築方法をわかりやすく解説しています。
  • 特定商取引法に基づく表示
  • 運営者情報
  • お問い合わせ
  • サイトマップ
  • twitter
  • facebook
  • Google +1
  • RSS
Copyright ©2025 CentOSサーバー構築入門 All Rights Reserved.

[↑]このページの先頭へ