Kenichi Maehashi's Blog
脳内コアダンプ

VirtualHost を書かずにバーチャルホストする黒魔術 (Revised)
Thursday | January 21, 2010
以前書いた記事の構成が、某運用環境で採用されることになりました。

再掲すると、
UserDir public_html
RewriteEngine on
RewriteMap vhostusers txt:/path/to/vhostusers.txt
RewriteCond ${vhostusers:%{HTTP_HOST}} .+
RewriteRule ^/(.*)$ /~%0/$1 [PT,NS]
というように、VirtualHost コンテキストを使わずに自前で HTTP_HOST を読んで、UserDir に rewrite してしまえば、
  1. バーチャルホストがたくさんある環境でも設定は 1 個で済む (マッピングファイルとして外部化できる)
  2. サブドメインを増やすのに Apache の再起動が不要 (マッピングを書き換えれば瞬時に反映される)
  3. しかも、サブドメインごとに CGI などの実行権限を切り替えられる (UserDir だから suEXEC できる)
といいことずくめな設定です。サブドメインとユーザ間のマッピングは RewriteMap によって実現されます。この例では、/path/to/vhostusers.txt に
# Subdomain          User Name
www.example.com user001
first.example.com user001
second.example.com user002
third.example.com user003
のように書くことができます。

これを応用すれば、SNI を使わなくても、ワイルドカード SSL を使って複数の VirtualHost を 1 つの IP アドレスでホストすることができますね(同じドメイン配下のサイトであれば)。

 *

追記: これだと DirectorySlash でダメなケースがありますね。後日追記します。
コメント (0)
コメント


<< 前ページ[1]

トップページに戻る
Copyright © 2006-2021 Kenichi Maehashi, All Rights Reserved.