MENU

Apacheのバーチャルホスト設定

バーチャルホストにはIPベースのものとnameベースのものが有り
複数のIPアドレスで運用する際にはIPベースを使用し、
単一のIPアドレスで運用する際にはnameベースを使用します。
nameベースの場合はHTTPリクエストのホストヘッダに記載されている
ドメイン名をapacheが読んで振分処理をします。

 

また、IISでは「ホスト ヘッダー名」という機能が
「nameベースでのバーチャルホスト」と同様の機能です。
これらのIIS設定については以下のページにて説明しました。

 

 

nameベースのバーチャルホスト設定方法

CentOS7で確認しました。Apacheであれば、httpd.confに以下を記載します。

NameVirtualHost *

 

<VirtualHost *:80>
        ServerName www.example111.com
        ServerAlias example111.com
        DocumentRoot /var/www/html_1
</VirtualHost>

 

<VirtualHost *:80>
        ServerName www.example222.com
        ServerAlias example222.com
        DocumentRoot /var/www/html_2
</VirtualHost>

 

 

上記のバーチャルホスト設定後、パソコンのWEBブラウザで「http://example111.com/」
へアクセスするとHTTPリクエストのホストヘッダに記載されているドメイン名
(example111)をWEBサーバ(Apache)が理解して、該当のドキュメントルートの
WEBデータを返します。パケットは以下です。

 

※パソコンのWEBブラウザから或るホームページへアクセスすると
DNSサーバへIPアドレスの問い合わせ→WEBサーバへ3ウェイハンドシェイク→
WEBサーバへHTTPリクエストという順でトラフィックが流れます。

 

 

IPベースのバーチャルホスト設定方法

複数のIPアドレスを持ち、それぞれ別のホームページを見せる方法です。
機能はCentOSのVirtualInterface(VIF)と、ApacheのIPベースのVirtualHostを
使用します。

 

VirtualInterface(VIF)設定

cp -p /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:0
vi /etc/sysconfig/network-scripts/ifcfg-eth0:0

 

cp -p /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:1
vi /etc/sysconfig/network-scripts/ifcfg-eth0:1

 

それぞれの変更点は以下の3点

DEVICE=eth0:0

※ファイル名ifcfg-eth0:1へは eth0:1 と記載して下さい。

 

BOOTPROTO=none

 

IPADDR=192.168.1.10

設定したいIPアドレス

 

※不要なもの(例えばeth0:2と言う名前の空ファイル等)ができてしまって
いた場合、eth0・eth0:0・eth0:1とも有効にならないと思われます。

 

インターフェースの再起動

/etc/rc.d/init.d/network restart

 

 

VirtualHost設定

/etc/httpd/conf/httpd.conf

※keepaliveはデフォルトでoffでした。

 

<VirtualHost eth0:0のIPアドレス>
ServerName ホスト名
DocumentRoot コンテンツディレクトリ
</VirtualHost>

 

<VirtualHost eth0:1のIPアドレス>
ServerName ホスト名
DocumentRoot コンテンツディレクトリ
</VirtualHost>

 

 

Apacheの再起動

/etc/init.d/httpd restart

 

 

以上で設定完了です。