解決済みの質問

バーチャルホスト

現在 Windows2000とan httpdで
自宅にwebサーバーを立てています。
一つの非固定グローバルIPアドレスでドメインを二つ取得し
バーチャルホストで同一サーバーに二つ(仮にAとB)HPを持っているのですが(NICは一つです)
二つ気になることがあります。

まず、同一のLAN内のクライアントマシンから
このサーバーのローカルIPでアクセスした場合
現時点ではAのHPが表示されます。これを、BのHPが表示されるように
するには、ルーターでどのような設定をすればよいんでしょうか?

もう一つは、サーバーマシンでhttp://127.0.0.1/と入力して
アクセスしてみても、何も表示されないんですが
これはバーチャルホストで、同一サーバー内に二つのHPを持っている
ために起こる現象なのでしょうか?(普通自分のサーバー内のhpが表示されますよね?)
たいしたことではないのですが、ふと気になりました。
よろしくお願いします。

投稿日時 - 2007-09-02 00:13:37

QNo.3307513

困ってます

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

今回の件はルータは関係ないです。

>するには、ルーターでどのような設定をすればよいんでしょうか?

これはローカルIPアドレスで直接アクセスした場合ですよね?
であれば、anhttpdのバーチャルホストのところで、AとBを定義しているとおもいますが、その順番を逆にしてください。
たぶん今はA→Bの順番になっているとおもうので、B→Aの順番に。
どのバーチャルホスト宛のアクセスか分からない場合は、最初に定義されているものが適用されます。

今回はネームベースのバーチャルホストなので、IPアドレスでアクセスされるとネーム(つまりドメイン)が取得できないので、デフォルトのものが使用されるということになります。

>アクセスしてみても、何も表示されないんですが

これは127.0.0.1では待ち受けていないためと思われます。
バーチャルホストの設定のIPアドレスのところで、現在はサーバマシンに割り当てられているローカルIPアドレスが設定されているのではないでしょうか?
(例えば、192.168.0.10とか)
そのため、そのIPアドレス宛でないといけなくなっています。
この部分を*.*.*.*とすることで、すべてのIPアドレスで待ち受けますので、127.0.0.1でもアクセスできるようになります。


一応他の方の回答について補足させてもらうと、
#1の方の書かれている、
>ルータで振り分ける為にはルータ側で「リクエスト」を解析して振り分けをしなければならない。
については、今回はネームベースのヴァーチャルホストなので、httpサーバがやることになります。

#2の方の
>ドメインURLをDNSに問い合わせた際に、グローバルIPを返しますが、
>それがルーターの外側のIPのため、内部ネットワークへ戻す処理ができないことに由来します。

については、そういう機能のないルータとそういう機能のあるルータが存在します。
安いいわゆるブロードバンドルータでも機能のあるものは存在します。
(現状、どちらが一般的かわかりませんが)

投稿日時 - 2007-09-02 06:18:38

ANo.3

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

[  前へ  |  次へ ]

ベストアンサー以外の回答(2件中 1~2件目)

ANo.2

結論から申し上げますと、ルーターの設定では解決しません。
ローカルネットワークのパソコンそれぞれ1台ずつ(サーバーマシンを除く)に、次のように設定してください。(ファイルのコピーも可)
1.「スタート」→「検索」→「ファイルやフォルダ」で”hosts”を検索する
2.C:WINNT\system32\drivers\etc内にある”hosts”を右クリックし、「アプリケーションから開く」を選択して、左クリックし、アプリケーションはメモ帳を選択する。
3.開いたら、左側の#がある最終行の下に追加で記述します。
(TAB)192.168.xxx.xxx(TAB)ドメインA(具体的にxxx.comなど入力)
(TAB)192.168.xxx.xxx(TAB)ドメインB(具体的にxxx.jpなど入力)
※1.(TAB)はTABキーを押すとできるスペースです。
※2.192.168.xxx.xxxは、実際にサーバーマシンとして使用しているPCのIPを入力してください。
4.”hosts”ファイルを上書き保存をして閉じます。

※この作業を行う場合、必ず書き換え前の”hosts”ファイルのバックアップを取り、不具合が出たら、戻してください。

以上の作業で、ローカルマシンからドメインのURLでそれぞれが表示されます。(様は、DNSに頼らず、強制的にIPを指定してやるわけです。そうすると、ローカルマシンからのアクセスも、ドメインごとのリファラを正しく拾って表示してくれます)
サーバーマシンの場合、上記の作業のうち、192.168.xxx.xxxのところを、127.0.0.1に変えて記述してやれば、見るとこができます。

>これはバーチャルホストで、同一サーバー内に二つのHPを持っている
>ために起こる現象なのでしょうか?(普通自分のサーバー内のhpが表示されますよね?)
an httpdの仕様のような気もしますが、通常最初に登録したHPのみが見られると思います。
1つ考えられるのは、サーバーPCの”hosts”ファイルに何かおかしな記述が入っているかもしれません。

理由は、ドメインURLをDNSに問い合わせた際に、グローバルIPを返しますが、それがルーターの外側のIPのため、内部ネットワークへ戻す処理ができないことに由来します。

ですから、この設定を行ったとしても、サーバーマシンの動作確認はできますが、外部から正しくアクセスできるかどうかの根拠にはなりません。

サーバーが正しく外部から見えるかどうかは、参考URLの様なサイトを利用すると良いでしょう。

参考URL:http://www.aconus.com/~oyaji/www_tst/www_tst.htm

投稿日時 - 2007-09-02 03:38:23

ANo.1

ルータで振り分ける為にはルータ側で「リクエスト」を解析して振り分けをしなければならない。
具体的にはAでリクエストされたらA、BでリクエストされたらBへ
127.0.0.1で反応しないのはサーバソフトが127.0.0.1で受け付けるように設定されてないだけ。

投稿日時 - 2007-09-02 00:59:48

あわせてチェックしたい
  • バーチャルホストでDNSエラー ...
  • apache バーチャルホスト ...
  • AN HTTPDのバーチャルホストでCGIを実行 ...
PR

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら