[ トップページ / Comp / Virtual Host ]

バーチャルホスト悪戦苦闘記


kaede.toというドメインと取ったので、友人のサーバー(Apache)でhttp://kaede.toバーチャルホストとして運営しようとしたのだが、思いのほか苦戦した。

友人のサーバーにはIPアドレスは1つしか付いていないので、Non-IPベースのバーチャルホスティングという事になるのだが、マニュアルのサンプルを読む限り、非常に簡単そうに見える。

まずDNSにドメインを登録する。これは既に済ませてある。

次に、

NameVirtualHost 111.22.33.44

<VirtualHost 111.22.33.44>
DocumentRoot /www/domain
ServerName www.domain.tld
...

</VirtualHost>
<VirtualHost 111.22.33.44>
DocumentRoot /www/subdomain
ServerName www.sub.domain.tld
...
</VirtualHost>

という記述を付け加えれば良い、と書いてあったがこいつが食わせ物である。

まず第一に、日本のApacheページにあるNon-IPベースの方の解説にはなかったNameVirtualHostディレクティブが書かれている。これを入れないとうまく動作しない。また、日本のApacheページには、<VirtualHost>の中にFQDNをそのまま書いていたがこれもうまく行かない。IPアドレス直書きでないとうまく行かなかった。

さらに悪い事に、私はマシンのIPアドレスを間違えていた。外から見えるIPアドレスを書いていたのだが、NATか何かでIPアドレス変換させているらしく、マシンのインターフェイスのIPアドレスは外から見えるものと違っていたのだ。

仕方がないので、内側のIPアドレスを指定したところ、httpdが落ちてしまった。エラーログを見ると、「10.0.0.1が解決できない」旨のメッセージがある。

まさかローカルでしか使用しないアドレスのためにBINDを書き直すのも馬鹿らしいので、/etc/hostsに書き加えてみる。するとうまく起動。

/etc/hosts: 10.0.0.1 kaede.to www.kaede.to

試しにhttp://kaede.toを開いてみる。うまく表示されている。。。と思ったら、友人のサイトまでkaede.toになってしまっていた。これではいけない。何のためのバーチャルホストか分からないではないか。

結局、VirtualHostを2つ書き、一つは友人のサイト、もう一つはkaede.toを向くように設定したところうまくいった。

こんな解決方法でいいのだろうか。。。誰か知っている人がいたら教えてください。

結局こうしました。10.0.0.1が内側のIPアドレスです。

NameVirtualHost 10.0.0.1

<VirtualHost 10.0.0.1>
        DocumentRoot /docs/
        ServerName www.digital-canvs.com
</VirtualHost>

<VirtualHost 10.0.0.1>
	DocumentRoot /docs/kaede/
	ServerName www.kaede.to
	ServerAlias  kaede.to *.kaede.to
</VirtualHost>      

[ トップページ / Comp / Virtual Host ]