投稿日:2005年12月12日 作成鷹の巣

No.19912 バーチャルホスト



バーチャルホスト

No.19912 投稿時間:2005年12月12日(Mon) 21:53 投稿者名:GIGs URL:

WINDOWS2000で
apacheでバーチャルホストをしようとしているのですが、
httpd以下にフォルダを作成しても、
独自ドメインがうまく反映してくれません。

ちなみに、
httpd.confは

NameVirtualHost **.**.**.**
<VirtualHost **.**.**.** :80>
DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs/sample"
ServerName ***.com
</VirtualHost>

windowsNTのsystem32の
hosts
には

**.**.**.** sample1.com
**.**.**.** sample2.com

と記述しています。


独自ドメインを同じサーバに設定するには、
DNSサーバを構築しないとだめなのでしょうか?

それか、DNSサーバのサービスを利用しないとだめなのでしょうか?

宜しくお願いします。


他に情報提供が必要であれば、言って下さい。


基本が分かっていない感じがします

No.19913 投稿時間:2005年12月12日(Mon) 22:44 投稿者名:Reboot URL:

> WINDOWS2000で
> apacheでバーチャルホストをしようとしているのですが、
> httpd以下にフォルダを作成しても、
> 独自ドメインがうまく反映してくれません。
> ちなみに、
> httpd.confは
> NameVirtualHost **.**.**.**
> <VirtualHost **.**.**.** :80>
> DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs/sample"
> ServerName ***.com
> </VirtualHost>

バーチャルホストって仰いますが、ネームベースの設定ですよね。
だとしたら、
http://httpd.apache.org/docs/2.1/ja/vhosts/name-based.html
にあるように、ふたつ設定しないと。

NameVirtualHost *:80

<VirtualHost *:80>
ServerName sample1.com
DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs/sample1"
</VirtualHost>

<VirtualHost *:80>
ServerName sample2.com
DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs/sample2"
</VirtualHost>

> windowsNTのsystem32の
> hosts
> には
> **.**.**.** sample1.com
> **.**.**.** sample2.com
> と記述しています。

これが分かりません。
ネームベースだったら、ひとつのIPアドレスの筈ですが…。

192.168.*.* sample1.com sample2.com

> 独自ドメインを同じサーバに設定するには、
> DNSサーバを構築しないとだめなのでしょうか?
> それか、DNSサーバのサービスを利用しないとだめなのでしょうか?

独自ドメインを同じサーバに設定する場合でなくても、どこかのサービスを受けるか、
自前でDNSサーバ(固定IPの場合)を立てるかになると思いますが…。
基本が全然分かっていない感じがします。

ただ LAN 内で hosts ファイルに設定して httpd.conf のバーチャルホストの設定が生きるかを
テストするのでしたら、ドメインの登録や、ネームサーバの利用は必要ありませんが…。

> 宜しくお願いします。
> 他に情報提供が必要であれば、言って下さい。


すいません。説明不足でした。

No.19914 投稿時間:2005年12月12日(Mon) 23:34 投稿者名:GIGs URL:

ご回答ありがとうございます。


すいません。説明不足でした。


> <VirtualHost *:80>
> ServerName sample1.com
> DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs/sample1"
> </VirtualHost>
>
> <VirtualHost *:80>
> ServerName sample2.com
> DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs/sample2"
> </VirtualHost>


はい以上のように二つ設定していました。


apacheのhtdocsに設置したhtmlはグローバルから、
閲覧することはできていました。
ただ、バーチャルホストが出来ていませんでした。


そして、ご説明頂いた設定方法を試させて頂いたのですが、
外部からは
"C:/Program Files/Apache Group/Apache2/htdocs/sample1"
は閲覧できるのですが、
"C:/Program Files/Apache Group/Apache2/htdocs/sample2"
にアクセスしようとしても、

sample1のhtmlが表示されてしまいます。
外部閲覧PCのインターネット一時ファイルの削除なども行ってみたのですが、
sample2は表示されません。


何が原因なのでしょうか?


ただ見えた見えないでなくて…

No.19915 投稿時間:2005年12月13日(Tue) 01:04 投稿者名:Reboot URL:

> ご回答ありがとうございます。
> すいません。説明不足でした。
> > <VirtualHost *:80>
> > ServerName sample1.com
> > DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs/sample1"
> > </VirtualHost>
> > <VirtualHost *:80>
> > ServerName sample2.com
> > DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs/sample2"
> > </VirtualHost>

> はい以上のように二つ設定していました。

> apacheのhtdocsに設置したhtmlはグローバルから、
> 閲覧することはできていました。
> ただ、バーチャルホストが出来ていませんでした。

> そして、ご説明頂いた設定方法を試させて頂いたのですが、
> 外部からは
> "C:/Program Files/Apache Group/Apache2/htdocs/sample1"
> は閲覧できるのですが、
> "C:/Program Files/Apache Group/Apache2/htdocs/sample2"
> にアクセスしようとしても、

> sample1のhtmlが表示されてしまいます。
> 外部閲覧PCのインターネット一時ファイルの削除なども行ってみたのですが、
> sample2は表示されません。

> 何が原因なのでしょうか?

ただ見えた見えないでなくて、順を追ってひとつひとつ確認して行くことが大事
だと思います。

> はい以上のように二つ設定していました。

とありますが、
<VirtualHost **.**.**.** :80> の部分にそれぞれ違う
IP アドレスを書き込んでいませんか。

外部閲覧PCって、具体的にどこにあるPCですか。
本当に LAN 外からのアクセスでしたら、hostsに
192.168.*.* sample1.com sample2.com
とローカルIPを設定するのは意味ないです。

そもそも LAN 環境があるのですか。あるのでしたら、まず LAN 内で
hostsに 192.168.*.* sample1.com sample2.com と設定してある
クライアントマシンから両方閲覧できるかどうかチェックしたらいいと思います。

ふたつめのドメインとはどういうものですか。ふたつ登録してあるのですか。
それともひとつのもので、ワイルドカードを使ったものですか。


グローバルからのアクセスです。

No.19916 投稿時間:2005年12月13日(Tue) 08:55 投稿者名:GIGs URL:

> <VirtualHost **.**.**.** :80> の部分
> <VirtualHost *:80> に直してありますか。
> *:80 のアスタリスク * は何かを隠しているのではなく、アスタリスク
> そのものを書き込みます。

はい。以上のように編集しました。

> 外部閲覧PCって、具体的にどこにあるPCですか。
> 本当に LAN 外からのアクセスでしたら、hostsに
> 192.168.*.* sample1.com sample2.com
> とローカルIPを設定するのは意味ないです。

場所もIPアドレスも違う、
本当にグローバルからのアクセスです。
LAN経由ではありません。

> ふたつめのドメインとはどういうものですか。ふたつ登録してあるのですか。
> それともひとつのもので、ワイルドカードを使ったものですか。.

sam1.sample.com
sam2.sample.com

と、今はサブドメインを使用しているのですが、
後に独自ドメイン複数に変更しようと思っています。


htdocsにはindex.htmlは設置していません。


ヒントです。

No.19917 投稿時間:2005年12月13日(Tue) 11:44 投稿者名:Reboot URL:

> > <VirtualHost **.**.**.** :80> の部分
> > <VirtualHost *:80> に直してありますか。
> > *:80 のアスタリスク * は何かを隠しているのではなく、アスタリスク
> > そのものを書き込みます。
> はい。以上のように編集しました。
> > 外部閲覧PCって、具体的にどこにあるPCですか。
> > 本当に LAN 外からのアクセスでしたら、hostsに
> > 192.168.*.* sample1.com sample2.com
> > とローカルIPを設定するのは意味ないです。
> 場所もIPアドレスも違う、
> 本当にグローバルからのアクセスです。
> LAN経由ではありません。
> > ふたつめのドメインとはどういうものですか。ふたつ登録してあるのですか。
> > それともひとつのもので、ワイルドカードを使ったものですか。.
> sam1.sample.com
> sam2.sample.com
> と、今はサブドメインを使用しているのですが、
> 後に独自ドメイン複数に変更しようと思っています。
> htdocsにはindex.htmlは設置していません。

ドメイン部分は伏せてもいいですが、ただ言われたとおりに設定しましたではなくて、
具体的に NameVirtualHost… 以下の httpd.conf の設定を全てここに書き込んで
頂けないと、後は何ともいえないですね。スペルミスがあったなんてことはよくあり
ますので。(わたしだけかな?(^^;))

■以下 Apache ヘルプドキュメントからの抜粋です。
--------------------------------------------------------------------
<VirtualHost> のそれぞれのセクションの中から ServerName か ServerAlias
に要求されたホスト名があるか探します。 見つかればそのサーバ用の設定を使います。

マッチするバーチャルホスト が見つからなければ、マッチした IP アドレスのリストの
最初にあるバーチャルホスト が使われます。

結果として、リストの最初のバーチャルホストが デフォルト の バーチャルホストになります。
IP アドレスが NameVirtualHost ディレクティブにマッチした場合は、メインのサーバの
DocumentRoot は決して使われません。
---------------------------------------------------------------------
ということは、デフォルトでない、追加のバーチャルホストの設定になんらかの不備が
あって、マッチできていないということでは。


スペルミスはないと思うのですが。

No.19919 投稿時間:2005年12月13日(Tue) 13:14 投稿者名:GIGs URL:

> ということは、デフォルトでない、追加のバーチャルホストの設定になんらかの不備が
> あって、マッチできていないということでは。

確かにその通りですが、
<VirtualHost *:80>
ServerName n1.sample1.com
DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs/sample1"
</VirtualHost>

<VirtualHost *:80>
ServerName n2.sample2.com
DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs/sample2"
</VirtualHost>

以上のように、n1,n2とサブドメインを設定しているので、
スペルミスはないと思われます。

sample1にはアクセスするということは、
sample1の設定は正しいということになり、
sample2の設定も正しいということではないでしょうか?

httd.conf、hostの設定の他にすることはあるのでしょうか?

ちなみにhostは
192.168.*.* n1.sample1.com
192.168.*.* n1.sample2.com
と分けても同じですよね?


まぁ、頑張ってやってみてください

No.19920 投稿時間:2005年12月13日(Tue) 14:42 投稿者名:Reboot URL:

> > ということは、デフォルトでない、追加のバーチャルホストの設定になんらかの不備が
> > あって、マッチできていないということでは。
>
> 確かにその通りですが、
> <VirtualHost *:80>
> ServerName n1.sample1.com
> DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs/sample1"
> </VirtualHost>
>
> <VirtualHost *:80>
> ServerName n2.sample2.com
> DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs/sample2"
> </VirtualHost>
>
> 以上のように、n1,n2とサブドメインを設定しているので、
> スペルミスはないと思われます。

スペルミスがあるかないかを第三者が見るということで書いて頂いた訳で、
あなたが「スペルミスはないと思われます」と書く必要はないでしょう。
しかもわたしは、スペルミスのようなミスで上手く行かないことが往々にして
あると言った訳で、スペルミスがあると言った訳ではありません。

おかしな点。正確に記述するならば、
<VirtualHost *:80>
ServerName n1.sample.com
DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs/sample1"
</VirtualHost>

<VirtualHost *:80>
ServerName n2.sample.com
DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs/sample2"
</VirtualHost>

こう書かなければいけない筈です。どこが違うか分かりますか。

> httd.conf、hostの設定の他にすることはあるのでしょうか?

テストするクライアント機が
> 場所もIPアドレスも違う、
> 本当にグローバルからのアクセスです。
> LAN経由ではありません。
ということなんですから、 ローカルIP を指定する hosts ファイルの設定は
要らないでしょう。分かりますか、言っていること。

> ちなみにhostは
> 192.168.*.* n1.sample1.com
> 192.168.*.* n1.sample2.com
> と分けても同じですよね?

*.* の部分が同じなら同じですが、あえてふたつに分ける必要ありますか。
また、ワイルドカード部分は、n1 ですから、ワイルドカード部分で分けている
ケースを書いたつもりなら、n1.sample.com n2.sample.com となるべきです。
こういった些細な記述間違いが原因で、上手く行かないことが多いと言いたいのです。

> sample1にはアクセスするということは、
> sample1の設定は正しいということになり、
> sample2の設定も正しいということではないでしょうか?

とお思いならば、それでおやりなさい。
基本的なことが分かっていない。人の教えを素直に受け入れない。
そんな印象を持ちましたよ。細かい違いに気がつかない人は、
プログラム作成やサーバ管理には向かないと思います。(^^;)

質問して、レスがついてもそれっきりの人が多いから、そういう人に
比べれば数段上ですが…。
ぼちぼち上手く行きましたの書き込みがあるのではと期待していましたが、
残念です。わたしからのアドバイスはここまでですね。
頑張ってください。(^^)/~


記述のどこかが間違っている。

No.19921 投稿時間:2005年12月13日(Tue) 22:51 投稿者名:聞疑始 URL:http://homeserver-streaming.com/Document/Apache-PHP.html

> 外部からは
> "C:/Program Files/Apache Group/Apache2/htdocs/sample1"
> は閲覧できるのですが、
> "C:/Program Files/Apache Group/Apache2/htdocs/sample2"
> にアクセスしようとしても、
> > sample1のhtmlが表示されてしまいます。
> 外部閲覧PCのインターネット一時ファイルの削除なども行ってみたのですが、
> sample2は表示されません。
> > > 何が原因なのでしょうか?

二つ目のホスト設定のServerName(○○○.△△△.com)とグローバルアクセス時のホスト名(×××.△△△.com)が違う、または、二つ目の<VirtualHost *:80>内の記述のどこかが間違っている。

グローバルアドレス(○○○.△△△.com)でアクセスして、どこかのDNSサーバーで名前解決されて、
あなたのサーバーまでたどり着いているのですから、
あとはアクセスさせるフォルダーをApacheで指定する(これがバーチャルホスト設定)だけです。

整合性が取れていないと、必ず一つ目のフォルダーへアクセスします。

但し、きちっと他の設定がすべてできている前提での話ですので、あしからず・・・
あとは、Rebootさん同様、「頑張ってください」としか言いようがないです(゚゚)(。。)ペコッ

付録の実例
http://hoge.homeserver-streaming.com/
***.homeserver-streaming.comでアクセス可能にしているので、hoge・・・でもアクセスできますが、
hogeなんてバーチャルホストは作っていないので、ホームページが開きます。

http://webring.homeserver-streaming.com/
webringはバーチャルホストを作っているので、きちっとそれなりのところが開きます。


最初の既述(デフォルトになる)が表示されるのではないか。

No.19923 投稿時間:2005年12月14日(Wed) 09:31 投稿者名:stranger URL:

> ご回答ありがとうございます。
> > > すいません。説明不足でした。
> > > > <VirtualHost *:80>
> > ServerName sample1.com
> > DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs/sample1"
> > </VirtualHost>
> > > > <VirtualHost *:80>
> > ServerName sample2.com
> > DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs/sample2"
> > </VirtualHost>
> > > はい以上のように二つ設定していました。
> > > apacheのhtdocsに設置したhtmlはグローバルから、
> 閲覧することはできていました。
> ただ、バーチャルホストが出来ていませんでした。
> > > そして、ご説明頂いた設定方法を試させて頂いたのですが、
> 外部からは
> "C:/Program Files/Apache Group/Apache2/htdocs/sample1"
> は閲覧できるのですが、
> "C:/Program Files/Apache Group/Apache2/htdocs/sample2"
> にアクセスしようとしても、
> > sample1のhtmlが表示されてしまいます。
> 外部閲覧PCのインターネット一時ファイルの削除なども行ってみたのですが、
> sample2は表示されません。
> > > 何が原因なのでしょうか?

名前解決できないから IPアドレスで解決され
最初の既述(デフォルトになる)が表示されるのではないか

virtualhostで既述されたドメイン名がグローバルアドレスで解決されることが前堤だと思います


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