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

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

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



以上で設定完了です。