Webサーバーの作り方を知ってホームページを自作するとき、「複数のページをドメインごとに振り分けたい」と思うことがあるでしょう。
ドメインとIPアドレスと接続ポートの関係性を知った段階の人なら
「複数のドメインで複数のホームページを開くにはポートを複数増やさないといけないんじゃないのか?」
という疑問を持つと思います。持ちませんか?僕はすこし前まではそう思ってました。
つまり、
hello.com
world.com
という2つのドメインを取得してホームページを運用する場合、
hello.comはそのままアクセス出来るけど
world.comに繋ぐとwwwアクセスでは同じ80番ポートなので同じページが表示されてしまう!
だからworld.com:81という風に接続ポートを分ける必用があるんじゃないの?
という疑問です。
答えは、違います!同じIPアドレス、同じ80番ポートでもアクセスしてきたアドレスによってApache等のサーバーソフトでドメインごとにページをいくつでも振り分けることが出来るのです!
Apacheの場合VirtualHostという機能を利用します。
例えば、静的なページで設定する場合
(CentOS、Apache2.4使用の場合)
-- /etc/httpd/conf/httpd.conf --
Listen 80
<VirtualHost *:80>
Alias / /var/www/hello/
ServerName hello.domain.jpCustomLog logs/hello.access.log combined
ErrorLog logs/hello.error.log
<Directory /var/www/hello>
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
Alias / /var/www/world/
ServerName world.domain.jpCustomLog logs/world.access.log combined
ErrorLog logs/world.error.log
<Directory /var/www/world>
Require all granted
</Directory>
</VirtualHost>
こう記述することで
hello.domain.jpにアクセスされたページは/var/www/helloディレクトリへ、
world.domain.jpにアクセスされたページは/var/www/worldディレクトリへ
と振り分けることができます。
CustomLog logs/hello.access.log combined
ErrorLog logs/hello.error.log
この記述は、アクセスログとエラーログを見やすく振り分けています。
こすると/var/log/httpd/内にhello.access.logやworld.access.logといったログがページによって振り分けられるので便利です。
また、デフォルトでモジュールをインポートしている項目に
Include conf.modules.d/*.conf
という記述が見られると思いますが、同じように.confファイルとすることで設定ファイルをファイルとして振り分けることも出来ます。
例えば、
/etc/httpd/conf/extra/hello.conf
に
<VirtualHost *:80>
Alias / /var/www/hello/
ServerName hello.domain.jpCustomLog logs/hello.access.log combined
ErrorLog logs/hello.error.log
<Directory /var/www/hello>
Require all granted
</Directory>
</VirtualHost>
/etc/httpd/conf/extra/world.conf
に
<VirtualHost *:80>
Alias / /var/www/world/
ServerName world.domain.jpCustomLog logs/world.access.log combined
ErrorLog logs/world.error.log
<Directory /var/www/world>
Require all granted
</Directory>
</VirtualHost>
と記述したページを別々に作った場合、
に
Listen 80
Include conf/extra/hello.conf
Include conf/extra/world.conf
と記述することで上と同じように連続した設定として読み込むことが出来ます。
またワイルドカードで
Include conf/extra/*.conf
とすることでextraディレクトリ内の設定を全部読むということも出来ます。