Apache HTTP ServerでひとつのWebサーバで複数のサイトを運用出来る、VirtualHost(仮想ホスト)の設定方法をメモします。
この機能を実現するためには、アクセス可能にしたい全てのドメインに対してDNS(ネームサーバ)の設定であらかじめ名前解決させておく必要があります。
(ローカル開発環境で同じことをやりたい場合は下記を参照)
環境:CentOS 7.8, Apache HTTP Server 2.4.6
Apacheの設定ファイルを管理者権限で編集する
# vi /etc/httpd/conf/httpd.conf
insertモードで空いている箇所(最下部でOK)へ下記のように記述を行います。
有効にするドメインの数だけVirtualHostのタグを設定します。
<VirtualHost *:80> DocumentRoot /var/www/sub1 ServerName sub1.example.com </VirtualHost> <VirtualHost *:80> DocumentRoot /var/www/sub2 ServerName sub2.example.com </VirtualHost> <VirtualHost *:80> DocumentRoot /var/www/html ServerName example.com </VirtualHost>
- ServerName
- アクセスするドメイン名
- DocumentRoot
- ドメインに紐付ける公開ディレクトリ
Apacheのドキュメントルート (Web公開ディレクトリ)の場所はデフォルトで/var/www/htmlですが
上記のように、アクセスするドメインごとにそれぞれ別々のドキュメントルートを割り当てる事が出来ます。
設定ファイルの保存が完了したら、Apacheを再起動します。
# systemctl restart httpd
ブラウザから設定したドメインでアクセスし、それぞれのドキュメントルート配下の内容を表示することが出来たら完了です。
また、
上記のVirtualHostの設定は/etc/httpd/conf/httpd.conf内のインクルードオプション、「IncludeOptional conf.d/*.conf」が有効になっていれば、別ファイルに設定を記述することも出来ます。
(例) /etc/httpd/conf.d/vhost.conf を作成してこちらにVirtualHostの設定を記述する。