Apacheの仮想ホスト(VirtualHost)の設定

カテゴリ:Webサーバ

CentOS/Ubuntu 両対応

1つのVPSで複数のドメインのサイトを稼働させる事をマルチドメインと呼びます。
マルチドメインを実現するためには、Apacheで仮想ホスト(VirtualHost)を設定します。

Apacheの設定ファイルをviで開きます。

CentOS の場合:

# vi /etc/httpd/conf/httpd.conf

Ubuntu の場合:

# vi /etc/apache2/sites-available/000-default.conf

以下のパラメータを探し、コメントアウト(#)を外し、名前(ドメイン)ベースの仮想ホストを有効にします。

変更前:

#NameVirtualHost *:80

変更後:

NameVirtualHost *:80

次に、各ドメインごとにドキュメントルートの割り当てを設定します。
VirtualHost ディレクティブでドメインとディレクトリを一対一で紐付けることで、マルチドメインを実現します。
例えば example1.com と example2.com のマルチドメイン構成の場合、以下のように VirtualHost ディレクティブを追記します。

<VirtualHost *:80>
ServerName example1.com
DocumentRoot /var/www/html/example1
<Directory "/var/www/html/example1">
allow from all
Options -Indexes
</Directory>
</VirtualHost>

<VirtualHost *:80>
ServerName example2.com
DocumentRoot /var/www/html/example2
<Directory "/var/www/html/example2">
allow from all
Options -Indexes
</Directory>
</VirtualHost>

ドメイン配下の任意のディレクトリに対して、ダイジェスト認証によるアクセス制御を設定する場合なども VirtualHost ディレクティブ内に Directory ディレクティブを用いて記述します。

<VirtualHost *:80>
ServerName example1.com
DocumentRoot /var/www/html/example1
<Directory "/var/www/html/example1">
allow from all
Options -Indexes
</Directory>
<Directory "/var/www/html/example1/admin">
AuthName "Digest Auth"
AuthType Digest
AuthUserFile /var/www/digestpass
require valid-user
</Directory>
</VirtualHost>

1つのドメインを、1つの VirtualHost ディレクティブで定義します。
*:80 はすべてのIPアドレスへの 80 番ポート(http)へのリクエストを、指定した仮想ホストに割り当てることを意味します。
ServerName には割り当てるドメイン名を指定します。
DocumentRoot にはサイトのドキュメントルートのディレクトリを指定します。
※上記の場合、example1.com は /var/www/html/example1、example2.com は /var/www/html/example2 にサイトデータを配置します。
Directory ディレクティブには指定したディレクトリのオプションを設定します。
allow from all はアクセス制御の設定ですが、全てのホストからのアクセスを許可する事を意味します。
※特定のディレクトリにアクセス制限を行う場合は、対象のディレクトリの Directory ディレクティブを作成し、後述する認証設定のオプションを記述します。
Options -Indexes は DirectoryIndex ディレクティブで指定したファイルが見つからない場合にディレクトリのファイル一覧を表示するかどうかの設定ですが、-Indexes を指定すれば表示しないようになります。
AuthName は認証名、AuthType には認証のタイプ、AuthUserFile には認証するユーザーファイルが置かれているパスを指定します。
require valid-user は AuthUserFile に指定したユーザーファイルでの認証を要求し、認証に成功したユーザーにのみリソースのアクセス許可を与えることを意味します。

また、wwwあり、無しの統一のための記述もします。 以下はwww無しに統一するために、wwwがあった場合にwww無しに301リダイレクトを行うための設定です。
<VirtualHost *:80>
ServerName www.example1.com
Redirect permanent / http://example1.com/
</VirtualHost>
<VirtualHost *:80>
ServerName www.example2.com
Redirect permanent / http://example2.com/
</VirtualHost>

なお、/var/www/html/ 配下に index ファイルを置かない場合、ウェルカムページが表示されないように、ウェルカムページ(Test Page)の無効化を設定する必要があります。

公開日時:2014年07月19日 22:26:23
最終更新日時:2022年03月10日 20:49:37

なお、VPS選びで迷ったらこちらの記事で主要VPSのメモリ容量ごとの月額、年額料金を比較していますので、是非参考にしてみてください。

Webサーバに戻る

このページのトップに戻る