投稿日:2004年06月11日 作成鷹の巣

No.16381 バーチャルホストで同じページを表示してしまう



バーチャルホストで同じページを表示してしまう

No.16381 投稿時間:2004年06月11日(Fri) 08:01 投稿者名:クアトロバジーナ URL:

APACHE さん、ご回答ありがとうございました。
話がややこしくなったので改めてスレッドを立て直しました。

<<通信環境>>

環境としては ADSL で接続されており、ルータを使用した
一般的な?利用環境です。
外部から来た 80 ポートを 192.168.0.3:80 のローカルマシンに転送して
Web ページを表示できるところまでは問題なくできています。


<<PC 環境>>

Redhat 9
apache 1.3.27


<<目的>>

意図している動作はメインのページ www.domain.com と バーチャルドメイン www.domain2.com と test.minidns.net が
別々のページとして表示されることです。


<<設定>>

全部貼り付けると非常に長くなるとおもったので /etc/httpd/conf/httpd.conf
の Virtual host の部分を貼り付けました。

NameVirtualHost 192.168.0.3

<VirtualHost 192.168.0.3>
ServerAdmin root@localhost
DocumentRoot "/var/www/domain2/"
ServerName www.domain2.com
ErrorLog logs/error_log_domain2
CustomLog logs/access_log_domain combined
</VirtualHost>


<VirtualHost 192.168.0.3>
ServerAdmin root@localhost
DocumentRoot "/var/www/test/"
ServerName test.minidns.net
ErrorLog logs/error_log_test
CustomLog logs/access_log_test combined
</VirtualHost>

ところが、メインのドメインと一番初めのバーチャルドメインが同じページを
表示してしまいます。これは DNS の設定等も関係あるのでしょうか?
バリュードメインというところで二つ独自ドメインを取得しております。

具体的には
独自ドメイン1のサイト A
独自ドメイン2のサイト B
minidns.net のサイト C

で、アクセスするときに
A を表示させる → B が表示される
B を表示させる → B が表示される
C を表示させる → C が表示される

となり、肝心の A が表示されないのです。
ローカルの IP でアクセスしたときはうまくいきます。
192.168.0.3 を表示させる → A が表示される

外部からでも結果は変わりません。

以上、よろしくお願いします。


全てドキュメントに書いてありますので、良くご覧になったらどうですか?

No.16383 投稿時間:2004年06月11日(Fri) 09:20 投稿者名:おやじ URL:http://www.aconus.com/~oyaji/

> APACHE さん、ご回答ありがとうございました。
> 話がややこしくなったので改めてスレッドを立て直しました。
>
> <<通信環境>>
>
> 環境としては ADSL で接続されており、ルータを使用した
> 一般的な?利用環境です。
> 外部から来た 80 ポートを 192.168.0.3:80 のローカルマシンに転送して
> Web ページを表示できるところまでは問題なくできています。
>
>
> <<PC 環境>>
>
> Redhat 9
> apache 1.3.27
>
>
> <<目的>>
>
> 意図している動作はメインのページ www.domain.com と バーチャルドメイン www.domain2.com と test.minidns.net が
> 別々のページとして表示されることです。
>
>
> <<設定>>
>
> 全部貼り付けると非常に長くなるとおもったので /etc/httpd/conf/httpd.conf
> の Virtual host の部分を貼り付けました。
>
> NameVirtualHost 192.168.0.3
>
> <VirtualHost 192.168.0.3>
> ServerAdmin root@localhost
> DocumentRoot "/var/www/domain2/"
> ServerName www.domain2.com
> ErrorLog logs/error_log_domain2
> CustomLog logs/access_log_domain combined
> </VirtualHost>
>
>
> <VirtualHost 192.168.0.3>
> ServerAdmin root@localhost
> DocumentRoot "/var/www/test/"
> ServerName test.minidns.net
> ErrorLog logs/error_log_test
> CustomLog logs/access_log_test combined
> </VirtualHost>
>
> ところが、メインのドメインと一番初めのバーチャルドメインが同じページを
> 表示してしまいます。これは DNS の設定等も関係あるのでしょうか?
> バリュードメインというところで二つ独自ドメインを取得しております。
>
> 具体的には
> 独自ドメイン1のサイト A
> 独自ドメイン2のサイト B
> minidns.net のサイト C
>
> で、アクセスするときに
> A を表示させる → B が表示される
> B を表示させる → B が表示される
> C を表示させる → C が表示される
>
> となり、肝心の A が表示されないのです。
> ローカルの IP でアクセスしたときはうまくいきます。
> 192.168.0.3 を表示させる → A が表示される
>
> 外部からでも結果は変わりません。

話ははじめからややこしくないので、別スレにする意味が分かりませんが。
答えはやるべきことをやっていないからで、独自ドメイン1のバーチャルホストを作ればおしまいです。
名前ベースのバーチャルホストを設定した時点で、メインのサーバはIPアドレスでのアクセス以外は実質的に死んだ状態です。Apache は、条件が合わなければ(ServerName がミスマッチ)、conf に登録されている先頭のバーチャルホストへのアクセスとして動作するので、全く正常な動作です。
従って、例えば、www.domain2.com 以外に domain2.com でもDNSが牽けるなら、ServerAliasを使って

ServerAlias domain2.com *.domain2.com

とでもしておかないと、今の設定のままだと、www.domain2.com にはマッチせず、もしwww.domain.com を先頭に記述してあれば、domain2.comでアクセスしてくるとwww.domain.comのホストデータを表示してしまうので、良く考えて設定してください。
www.domain2.comしか許容しないなんて方法もありますよね。つまり、先頭にダミーのバーチャルホストを書いて、そこにはドキュメントを置いておかず404エラーにするとか? そこで正規のURLを紹介するとかいろいろな運用バリエーションが考えられます。
全てドキュメントにかいてありますので、良くご覧になったらどうですか?

http://httpd.apache.org/docs/vhosts/name-based.html


|目次|掲示板|過去ログ目次|▲頁先頭|