- ベストアンサー
バーチャルホスト
現在 Windows2000とan httpdで 自宅にwebサーバーを立てています。 一つの非固定グローバルIPアドレスでドメインを二つ取得し バーチャルホストで同一サーバーに二つ(仮にAとB)HPを持っているのですが(NICは一つです) 二つ気になることがあります。 まず、同一のLAN内のクライアントマシンから このサーバーのローカルIPでアクセスした場合 現時点ではAのHPが表示されます。これを、BのHPが表示されるように するには、ルーターでどのような設定をすればよいんでしょうか? もう一つは、サーバーマシンでhttp://127.0.0.1/と入力して アクセスしてみても、何も表示されないんですが これはバーチャルホストで、同一サーバー内に二つのHPを持っている ために起こる現象なのでしょうか?(普通自分のサーバー内のhpが表示されますよね?) たいしたことではないのですが、ふと気になりました。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
今回の件はルータは関係ないです。 >するには、ルーターでどのような設定をすればよいんでしょうか? これはローカル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のため、内部ネットワークへ戻す処理ができないことに由来します。 については、そういう機能のないルータとそういう機能のあるルータが存在します。 安いいわゆるブロードバンドルータでも機能のあるものは存在します。 (現状、どちらが一般的かわかりませんが)
その他の回答 (2)
- Lucky357
- ベストアンサー率56% (147/260)
結論から申し上げますと、ルーターの設定では解決しません。 ローカルネットワークのパソコンそれぞれ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の様なサイトを利用すると良いでしょう。
ルータで振り分ける為にはルータ側で「リクエスト」を解析して振り分けをしなければならない。 具体的にはAでリクエストされたらA、BでリクエストされたらBへ 127.0.0.1で反応しないのはサーバソフトが127.0.0.1で受け付けるように設定されてないだけ。