Kenichi Maehashi's Blog

脳内コアダンプ

RSS
Category: Linux
以前書いた記事の構成が、某運用環境で採用されることになりました。

再掲すると、
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 でダメなケースがありますね。後日追記します。

Comments

Leave Yours...
Name:
E-mail / URL (optional):
Comment:
Are You Robot?: