2010年05月09日

[Apache]ひとつのIPアドレスでネームベースで別サイトを定義する。(単一IP複数ドメイン運用)

VPSでひとつのIP/ポートでサブドメイン毎にディレクトリを振り分けたかったのですが、ちょっと苦戦したのでメモしておきます。

Apacheのマニュアルによると、NameVirtualHostとVirtualHostディレクティブを定義すればOKと書いてあるが、その通りやってみるとうまくいかない。

この時点での設定はこんな感じ。
NameVirtualHost *:80
<VirtualHost *:80>
    DocumentRoot "/var/www/html"
    ServerName www.sample.com
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot "/var/subdomain/html"
    ServerName subdomain.sample.com
</VirtualHost>


さらに、apacheの再起動時にこんなエラーメッセージが出た。

NameVirtualHost *:80 has no VirtualHosts


困ったので、少し調べてみると、関連する記事を発見。
とりあえずNameVirtualHostの定義を消してみるが、うまくいかない。

1.定義済みのドメイン
www.sample.com→/var/www/html/index.html
subdomain.sample.com→/var/www/html/index.html
2.未定義のドメイン
sample.sample.com→/var/www/html/index.html

で、いろいろやってみた結果、下記の定義で成功。

NameVirtualHost www.sample.com:80
NameVirtualHost subdomain.sample.com:80
<VirtualHost www.sample.com:80>
    DocumentRoot "/var/www/html"
    ServerName www.sample.com
</VirtualHost>
<VirtualHost subdomain.sample.com:80>
    DocumentRoot "/var/subdomain/html"
    ServerName subdomain.sample.com
</VirtualHost>


1.定義済みのドメイン
www.sample.com→/var/www/html/index.html
subdomain.sample.com→/var/subdomain/html/index.html
2.未定義のドメイン
sample.sample.com→/var/www/html/index.html
※一番上のVirtualHostが優先度が高いため、適用される。
ラベル:Apache
posted by 萬識楽 at 02:06| Comment(0) | Linux | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。