| コメント |
by 寿 2009/02/15
vhosts_aliasでも実現できましたかー、良いですね。
> ただ、ユーザ名とサブドメイン名が完全に無関係な某特殊任務では使えないですね…。
mod_vhost_alias_suexec.so の作成フラグですかな(^^)。
|
by Kenichi Maehashi 2009/02/15
ちょっと試したところ、頑張れば suEXEC もできるみたいです。
#################################### UserDir public_html ... <VirtualHost *:443> VirtualDocumentRoot "/path/to/vhosts/%0" ... ####################################
という設定にしておいて、ファイルシステムで
#################################### /path/to/vhosts/first.example.com --> /home/user001/public_html /path/to/vhosts/second.example.com --> /home/user002/public_html ####################################
とリンクを張って、さらに上記の VirtualHost の設定の中に
#################################### RewriteEngine on RewriteMap vhostuser txt:/var/www/map.txt RewriteCond ${vhostuser:%{HTTP_HOST}|"nobody"} !nobody RewriteRule ^/(.+)$ /${vhostuser:%{HTTP_HOST}}/$1 [PT] ####################################
と書いて「ホスト名 -> "~ユーザ名"」の Rewrite を掛け、最後に /var/www/map.txt に
#################################### first.example.com ~user001 second.example.com ~user002 ####################################
とマッピングを定義してやると、一応実現できました。
サブドメイン以下の全リクエストに毎回 Rewrite が掛かるので、ちょっと嫌ですが…。
|
by 寿 2009/02/15
実際の処理はUserDirに任してsuEXECで動かすってことですね。 とても黒魔術チックですが、SSLが掛かるページは非SSLページに比べて頻度が低いだろうし有りなんじゃないかな。
|
by Kenichi Maehashi 2009/02/15
/var/www/map.txt でサブドメインを一元管理(←悪魔のキーワード)できるので、どうせやるなら(高負荷時に問題が起きないなら)、非 SSL のところも同じように書きたいですね。 現状の、 www.example.com/~user/ first.example.com/ first.example.com/~user/ で同じページが見えてしまうという問題も解決できますし。
この方式なら vhost_alias は関係ないので > VirtualDocumentRoot "/path/to/vhosts/%0" > /path/to/vhosts/first.example.com --> /home/user001/public_html > /path/to/vhosts/second.example.com --> /home/user002/public_html は不要でした…。
|
by Kenichi Maehashi 2009/02/16
# 後で読む方のために
RewriteRule ^/(.+)$ /${vhostuser:%{HTTP_HOST}}/$1 [PT,NS]
のように NS をつけないと、DirectoryIndex の検索時にションボリします。
|
by 寿 2009/02/16
SSL/非SSL両方とも問題ないと思うので近日実践投入してみましょう。
|
| |