2008年11月6日木曜日

Vistaで名前ベースのバーチャルホスト(Apache)のテスト

スズキです。

名前ベースのバーチャルホストは、Webサーバ(Apache)が
同じIPアドレスへのリクエストに対し、クライアントが送る
Hostヘッダ(ホスト名.ドメイン名)の内容で、コンテンツ
(ドキュメントルート)を切り替えることを可能とする機能です。

ブラウザが送るHostヘッダの内容は、基本的にアドレスバーに
入力されたホスト名.ドメイン名となるので、DNSにもそれ相応の
設定が必要となります。

ここでのお話は、Webサーバ(Apache)の設定は終了しているが、
DNSの設定が終わっておらず、普通にブラウザから
ホスト名.ドメイン名でアクセスしても、設定が終了している
Webサーバ(Apache)にリクエストが届かない状況についての
ものです。

このような状況は、たとえば、あるホスト名.ドメイン名に対応する
IPアドレス(Webサーバ)を移行するときの準備段階などで
起こります。

ですので、名前ベースのバーチャルホストの設定が正常に
機能しているかどうかは、DNSの設定が終了していなければ、
終了している状態をエミュレートする必要があります。

Windowsでよく利用される(と思う)手段としては、hostsファイルの
書き換えがあります。hostsファイルは、Vistaでは
C:\Windows\System32\drivers\etc\
にあり、下記のような内容となっています。
--------
127.0.0.1 localhost
::1 localhost
--------

hostsファイルはホスト名.ドメイン名とIPアドレスをマッピングさせる
ファイルで、同じ機能をもつDNSの結果より優先されます。なので、
旧: hoge.com - 192.168.1.10 (現在の設定)
新: hoge.com - 192.168.2.20 (192.168.1.10)
の場合、hoge.comでリクエストをしても、192.168.1.10のサーバに
リクエストが届き、名前ベースのバーチャルホストの確認が
できませんが、下記のようにhostsファイルを編集することにより、
--------
127.0.0.1 localhost
::1 localhost
192.168.2.20 hoge.com
--------
hoge.comのリクエストが、192.168.2.20に向かうことになり、
名前ベースのバーチャルホストの確認ができるようになります。

ここで、Vistaの場合、セキュリティの問題で、一筋縄ではいきません。
対策は、下記に詳しく紹介されています。
http://support.microsoft.com/kb/923947/ja

また、念のためコマンドプロンプトにて
# ipconfig /flushdns
と打ちDNSキャッシュのクリアもしておいたほうがいいでしょう。

書きたかったことは最後の部分なんだけど、長文になってしまった...

--
http://suz-lab.blogspot.com/

0 コメント: