こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

apacheのバーチャルホストの設定について

XAMPPを一通りインストールして、apacheでバーチャルホストの設定を行っております。

環境:Windows2003server
ApacheFriends XAMPP (Basispaket) version 1.7.1 + Apache 2.2.11

固定のグローバルIPアドレスは1つ持っており、仮に111.222.333.444としておきます。
バーチャルホストのドメイン名は2つ設定したいと思っており、
aaa.hogehoge.net
bbb.hogehoge.net

他業者のDNSにて111.222.333.444をAレコードの値として、それぞれ割り当てしました。
ちなみに、hogehoge.netのAレコードは別のサーバーを当てています。
そこで、携帯から直接 http://aaa.hogehoge.nethttp://bbb.hogehoge.net
をアクセスしましたら、自社サーバーのC:/xampp/htdocs/にあるindex.htmが表示されました。
一応、名前解決は成功したとして、、、
念のため、Windowsのhostsに
111.222.333.444  aaa.hogehoge.net  bbb.hogehoge.net
を追加しました。

apacheのメイン設定-httpd.conf
------------------------------
ServerRoot "C:/xampp/apache"
Listen 80
ServerAdmin admin@localhost
ServerName localhost:80
DocumentRoot "C:/xampp/htdocs/"

↓バーチャルホストのファイルをインクルード
Include conf/extra/httpd-vhosts.conf

----以下、httpd-vhosts.confの中身 ホスト名を2つ設定
NameVirtualHost 111.222.333.444:80

<VirtualHost 111.222.333.444:80>
ServerAdmin admin@aaa.hogehoge.net
DocumentRoot C:/xampp/htdocs/aaa.hogehoge.net
ServerName aaa.hogehoge.net
ServerAlias www.aaa.hogehoge.net
<Directory "C:/xampp/htdocs/aaa.hogehoge.net">
Options FollowSymLinks Includes ExecCGI
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

<VirtualHost 111.222.333.444:80>
ServerAdmin admin@bbb.hogehoge.net
DocumentRoot C:/xampp/htdocs/bbb.hogehoge.net
ServerName bbb.hogehoge.net
ServerAlias www.bbb.hogehoge.net
<Directory "C:/xampp/htdocs/bbb.hogehoge.net">
Options FollowSymLinks Includes ExecCGI
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

設定後、apacheを再起動して、再度携帯電話からhttp://aaa.hogehoge.nethttp://bbb.hogehoge.netにアクセスしたのですが、C:/xampp/htdocs/にあるindex.htmが表示されてしまい、C:/xampp/htdocs/aaa.hogehoge.net/index.htm、C:/xampp/htdocs/aaa.hogehoge.net/index.htmが表示されません。それぞれのパーミッション自体は766になっているので、こちらは違うと思うのですが、バーチャルホストの設定が悪いのか何処が悪いのか、何か設定が悪いのか全くわからなくなりました。参考書のマニュアルを見ると、「バーチャルホストを設定すると、メインホストの設定が無効になる」と書いてあったので、それでもメインのホストが表示されてしまうということは、バーチャルホストの設定に問題があるのだと自分なりに察知しております。

どなたか、考えられる原因や心当たりある事がございましたら、ご教授をお願いします。

投稿日時 - 2009-05-15 19:11:39

QNo.4961347

すぐに回答ほしいです

質問者が選んだベストアンサー

・サーバーがLANの中にあり(プライベートIPアドレスがついている)
・グローバルIPアドレスはルータについており
・ポート80をスタティックルーティングでサーバに飛ばしてる
という構成ではありませんか?

この想定が正しければ、ApacheはNameVirtualHostの対象IPアドレス以外であるからメインのDocumentRootを使うという正しい仕事をしています

サーバに実際についているIPアドレスをNameVirtualHost/VirtualHostに指定しましょう

投稿日時 - 2009-05-16 06:07:00

お礼

回答ありがとうございます。
ご指摘どおり、プライベートIPを当てる事で解決いたしました。
この部分を大きな勘違いしていた様ですね。
ありがとうございました。

投稿日時 - 2009-05-19 12:28:45

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

原因はわかりませんが
/usr/local/apache2/bin/httpd -S
ってやると(パスはちがうと思いますが)
バーチャルホストの解析が表示できると思います。
それで確認してみてはいかがでしょうか。

参考URL:http://httpd.apache.org/docs/2.2/ja/vhosts/

投稿日時 - 2009-05-15 20:36:26

お礼

回答ありがとうございます。
バーチャルホストの解析はコマンドにて既に検証済みでした。
説明が足りず、申し訳ありませんでした。
今回の件は、mattalixさんの回答で無事解決いたしました。
ありがとうございました。

投稿日時 - 2009-05-19 12:33:59

あなたにオススメの質問