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

最終更新日: 2014.02.19

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

■概要

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

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


■ドメイン名取得

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

■Apache設定

(1)バーチャルホスト設定
[root@fedora ~]# mkdir /var/www/html/virtual.com ← バーチャルホスト用ドキュメントルートディレクトリ作成

[root@fedora ~]# 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 fedorasrv.com:80 ← 行頭に#を追加してコメントアウト

NameVirtualHost *:80 ← コメント解除(バーチャルホスト有効化)

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

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

[root@fedora ~]# 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)ApacheSSL設定Webサーバー間通信内容暗号化を導入している場合のみ
名前ベースバーチャルホストの場合(グローバルIPアドレス1個で複数のWebサイトを運営する場合)で、メインホストがfedorasrv.com、バーチャルホストがvirtual.comとした場合、https://fedorasrv.com/でアクセスしてもhttps://virtual.com/でアクセスしても、https://fedorasrv.com/のWebページが表示されてしまうので、 https://fedorasrv.com/でアクセスした場合はそのままで、https://virtual.com/でアクセスした場合はhttp://virtual.com/へリダイレクトするようにする。
[root@fedora ~]# vi /etc/httpd/conf.d/ssl.conf ← ApacheSSL設定ファイル編集
#   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"

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

■Apache再起動

[root@fedora ~]# /etc/rc.d/init.d/httpd restart ← Apache再起動
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

■バーチャルホスト確認

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

Free Website Test tools by WebSitePulse


「Test Type」で「Website Test」を選択
「Test Target」でサーバー名(例:http://virtual.com)を指定
「Verification Cpde」に画像で表示されている数字を入力
「Perform Test」ボタンを押下

以下のような結果が表示されればOK
Website test results

URL tested: http://virtual.com
Test performed from: Seattle, WA
Test performed at: 2007-06-12 07:30:13 (GMT -07:00)
Status: OK
Response Time: 2.298 sec
DNS: 0.708 sec
Connect: 0.146 sec
First byte: 0.147 sec
Last byte: 1.296 sec
Size: 23294 bytes

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

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

DNSサーバー構築(BIND)を参考に、追加したWebサイトのドメイン名(virtual.com)のゾーン定義ファイル及び、正引きゾーンデータベースを作成、named.confへ作成したゾーン定義を取り込むinclude文を追加して、内部向けDNSサーバーへ反映する。

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


■関連コンテンツ




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

プライバシーポリシー