バーチャルホスト設定(Apache)

最終更新日: 2016.12.21

<<トップページ <<新着情報 <<リンク集 <<サイト内検索 <<Scientific Linuxで自宅サーバー構築 <<Fedoraで自宅サーバー構築

■概要

現在運用中のWebサーバーで、もうひとつWebサイトを運用する。
ここでは、WebサーバーApacheのバーチャルホスト機能を使用して、以下に示す条件で2つのWebサイトを運用できるようにする。

・メインWebサイトはhttp://centossrv.com/
・追加するWebサイトはhttp://virtual.com/
・メインWebサイトのドキュメントルートは/var/www/html
・追加するWebサイトのドキュメントルートは/var/www/html/virtual
・メインWebサイトへのアクセスログは/var/log/httpd/access_log、/var/log/httpd/error_logに記録する
・追加するWebサイトへのアクセスログは/var/log/httpd/virtual-access_log、/var/log/httpd/virtual-error_logに記録する


■ドメイン名取得

追加するWebサイトのドメイン名を取得する。⇒ドメイン名取得(独自ドメイン編)または、ドメイン名取得(ieServer.Net編)を参照

■Webサーバー設定

(1)バーチャルホスト設定
【CentOS7の場合】
[root@centos ~]# mkdir /var/www/html/virtual ← バーチャルホスト用ドキュメントルートディレクトリ作成

[root@centos ~]# vi /etc/httpd/conf.d/virtualhost-00.conf ← 未定義ホスト用バーチャルホスト設定ファイル作成
※バーチャルホスト未定義ホスト名でアクセス時にアクセスを拒否する
<VirtualHost *:80>
    ServerName any
    <Location />
        Require all denied
    </Location>
</VirtualHost>

[root@centos ~]# vi /etc/httpd/conf.d/virtualhost-centossrv.com.conf ← メインホスト用バーチャルホスト設定ファイル作成
<VirtualHost *:80>
    ServerName centossrv.com
    DocumentRoot /var/www/html
</VirtualHost>

[root@centos ~]# vi /etc/httpd/conf.d/virtualhost-virtual.com.conf ← 追加ホスト用バーチャルホスト設定ファイル作成
<VirtualHost *:80>
    ServerName virtual.com
    DocumentRoot /var/www/html/virtual
    ErrorLog logs/virtual-error_log
    CustomLog logs/virtual-access_log combined env=!no_log
</VirtualHost>

【CentOS6,5の場合】
[root@centos ~]# mkdir /var/www/html/virtual ← バーチャルホスト用ドキュメントルートディレクトリ作成

[root@centos ~]# vi /etc/httpd/conf/httpd.conf ← Apache設定ファイル編集
#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If this is not set to valid DNS name for your host, server-generated
# redirections will not work.  See also the UseCanonicalName directive.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
# You will have to access it by its address anyway, and this will make
# redirections work in a sensible way.
#
#ServerName centossrv.com:80 ← 行頭に#を追加してコメントアウト

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80 ← コメント解除(バーチャルホスト有効化)
#
# NOTE: NameVirtualHost cannot be used without a port specifier
# (e.g. :80) if mod_ssl is being used, due to the nature of the
# SSL protocol.
#

[root@centos ~]# vi /etc/httpd/conf.d/virtualhost-00.conf ← 未定義ホスト用バーチャルホスト設定ファイル作成
※バーチャルホスト未定義ホスト名でアクセス時にアクセスを拒否する
<VirtualHost *:80>
    ServerName any
    <Location />
        Order deny,allow
        Deny from all
    </Location>
</VirtualHost>

[root@centos ~]# vi /etc/httpd/conf.d/virtualhost-centossrv.com.conf ← メインホスト用バーチャルホスト設定ファイル作成
<VirtualHost *:80>
    ServerName centossrv.com
    DocumentRoot /var/www/html
</VirtualHost>

[root@centos ~]# vi /etc/httpd/conf.d/virtualhost-virtual.com.conf ← 追加ホスト用バーチャルホスト設定ファイル作成
<VirtualHost *:80>
    ServerName virtual.com
    DocumentRoot /var/www/html/virtual
    ErrorLog logs/virtual-error_log
    CustomLog logs/virtual-access_log combined env=!no_log
</VirtualHost>

(2)WebサーバーSSL設定Webサーバー間通信内容暗号化を導入している場合のみ
名前ベースバーチャルホストの場合(グローバルIPアドレス1個で複数のWebサイトを運営する場合)、メインホストがhttps://centossrv.com/、バーチャルホストがhttps://virtual.com/とした場合、https://centossrv.com/でアクセスしてもhttps://virtual.com/でアクセスしても、https://centossrv.com/のWebページが表示されてしまうので、 https://centossrv.com/でアクセスした場合はそのままで、https://virtual.com/でアクセスした場合はhttp://virtual.com/へリダイレクトするようにする。
[root@centos ~]# vi /etc/httpd/conf.d/ssl.conf ← WebサーバーSSL設定ファイル編集
#   Per-Server Logging:
#   The home of a custom SSL log file. Use this when you want a
#   compact non-error SSL logfile on a virtual host basis.
CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

【CentOS7の場合】
−−追加(ここから)−−
    <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteCond %{HTTP_HOST} !^centossrv.com$ ← メインホスト名を指定
      RewriteRule ^/(.*)?$ http://%{HTTP_HOST}/$1 [L,R]
    </IfModule>
−−追加(ここまで)−−

【CentOS6,5の場合】
−−追加(ここから)−−
    <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteLog "logs/rewrite_log"
      RewriteLogLevel 0
      RewriteCond %{HTTP_HOST} !^centossrv.com$ ← メインホスト名を指定
      RewriteRule ^/(.*)?$ http://%{HTTP_HOST}/$1 [L,R]
    </IfModule>
−−追加(ここまで)−−

</VirtualHost>

■Webサーバー再起動

[root@centos ~]# systemctl restart httpd ← Webサーバー再起移動※CentOS7の場合

[root@centos ~]# /etc/rc.d/init.d/httpd restart ← Webサーバー再起移動※CentOS6,5の場合


■バーチャルホスト確認

外部からバーチャルホストにアクセスできるか確認する。

[root@centos ~]# echo test >> /var/www/html/virtual/index.html ← テストページ作成

以下の「Hostname」欄にホスト名(例:virtual.com)を入力してGoボタンを押下する
WebSitePulse.com - free webmaster tools
Hostname:

以下のような結果が表示されればOK。
WebSite Test results

URL tested: virtual.com
Status: Server responded normally to all tests
Server Status: HTTP/1.1 200 OK
Server type: Apache
Last modified: Tue, 22 Nov 2005 04:30:27 GMT
Size: 5 bytes (0.00 Kb)
Response time: 0.5804 seconds

[root@centos ~]# rm -f /var/www/html/virtual/index.html ← テストページ削除

■内部向けDNSサーバーへドメイン名反映

内部向けDNSサーバー構築(BIND)を参考に、追加したWebサイトのドメイン名(virtual.com)の正引きゾーンデータベースを作成、named.confへ作成した正引きゾーンデータベース情報を追加して、内部向けDNSサーバーへ反映する。

これで、内部からも、追加したWebサイトへドメイン名(virtual.com)でアクセスできるようになる。



▲このページのトップへ戻る

LPIロゴ Copyright© 2005-2017 fallenangels, All rights reserved.
ご自由にリンクしてください(連絡は不要です)
本ページへのご意見・ご要望、誤字・脱字・リンク切れ等のご連絡はこちらからお願いします