Apache | 仮想ホスト(VirtualHost)の設定 | 仮想ホストのエイリアス設定(ServerAlias)

仮想ホストのエイリアス設定(ServerAlias)

名前ベースの仮想ホストが設定されているとき、登録されていないホスト名でアクセスされた場合にどうなるかを見てみる。

例えば、DNSまたは hosts ファイルに次のような記述があるとする。

127.0.0.1 localhost
127.0.0.1 ww1.devkuma.com
127.0.0.1 ww2.devkuma.com

これに対して、仮想ホストは ww1.devkuma.comww2.devkuma.com だけが設定されているとする。

<VirtualHost *:80>
    ServerName     ww1.devkuma.com
    ServerAdmin    devkuma@devkuma.com
    DocumentRoot   "${SRVROOT}/htdocs-ww1"
    CustomLog      logs/ww1.access.log common
    ErrorLog       logs/ww1.error.log
</VirtualHost>

<VirtualHost *:80>
    ServerName     ww2.devkuma.com
    ServerAdmin    devkuma@devkuma.com
    DocumentRoot   "${SRVROOT}/htdocs-ww2"
    CustomLog      logs/ww2.access.log common
    ErrorLog       logs/ww2.error.log
</VirtualHost>

この場合、http://localhost にアクセスすると、最初に登録されている仮想ホスト設定がデフォルトとして適用される。

仮想ホストのエイリアス設定(ServerAlias)

ここでは、最初に登録された仮想ホスト ww1.devkuma.com が表示された。

このような場合、仮想ホスト設定がないホストに対して、デフォルトではないホストの設定を適用できる。ServerAlias を使用し、仮想ホスト設定にエイリアスとして登録する。

ServerAlias ホスト名1 ホスト名2 ...

複数のホスト名を登録する場合は、空白で区切って続けて記述する。

実習

それでは実際に試してみる。http://localhost/ へのアクセスにも ww2.devkuma.com の設定が適用されるように、ww2.devkuma.comServerAlias として localhost を登録する。

<VirtualHost *:80>
    ServerName     ww1.devkuma.com
    ServerAdmin    devkuma@devkuma.com
    DocumentRoot   "${SRVROOT}/htdocs-ww1"
    CustomLog      logs/ww1.access.log common
    ErrorLog       logs/ww1.error.log
</VirtualHost>

<VirtualHost *:80>
    ServerName     ww2.devkuma.com
    ServerAdmin    devkuma@devkuma.com
    DocumentRoot   "${SRVROOT}/htdocs-ww2"
    CustomLog      logs/ww2.access.log common
    ErrorLog       logs/ww2.error.log
    ServerAlias    localhost
</VirtualHost>

これで準備は完了である。Apacheを再起動した後、もう一度 http://localhost/ にアクセスしてみる。

仮想ホストのエイリアス設定(ServerAlias)

今回はデフォルト設定ではなく、エイリアス設定された ww2.devkuma.com が表示された。