【お題】引っかけ問題(締め切り10月27日(日)23時)

httpルートへのアクセスはサーバーがいないようなフリをさせたいです。

httpサーバはapache互換です。

以下のような配置があるとします。

httpルート

+ーdira
  index.html
  page1.html


ブラウザから、
下記の入力で正しくページを表示。
http://ドメイン/dira
http://ドメイン/dira/index.html
http://ドメイン/dira/page1.html
http://IPアドレス/dira
http://IPアドレス/dira/index.html
http://IPアドレス/dira/page1.html



下記の入力、つまりhttpルートへのアクセスがあった場合、あたかもサーバが存在しないような、でたらめな誤ったドメイン(またはIP)を入力した時と同じリアクションを返す事はできますか?
http://ドメイン/
http://IPアドレス/



httpd.confの設定でできませんか?

A 回答 (5件)

mod_rewriteで自サーバの別ポート(使用してないポート)へリダイレクト


転送すれば、外見え的にはサーバが存在しないように見せられると思います。

(Rewriteルール記述例)
RewriteEngine on
RewriteRule ^/$ http://自ホスト名:9999/ [R=301,L]

この場合、ブラウザからの「http://ホスト名/」に対して
サーバは「301 Moved Permanently」を返却します。
その応答を受けてブラウザは、自動的に「http://ホスト名:9999/」へ
アクセス先を変え、その結果を表示するので、外見えにはWebサーバが
存在しないようなブラウザ画面が表示されると思います。

でもパケットキャプチャを取れば、/に対して301の応答があったことは
一目了然です。
他の方も言っていますが、「/」へのアクセスか否かは、コネクションを
接続してからでないとわかりません。したがって、本質的に無理な話であり、
ほとんど無意味だと思います。
(ポート80にコネクション接続できた時点でWebサーバが稼働しているとわかる)


ランダムなIPでWebサーバを探しに来る相手に自分のWebサーバを見せないように
したいのであれば、自分が公開しているWebサーバのポート番号を80以外の
一般的でない番号にするのが効果的だと思います。
つまり、
http://ドメイン:9999/dira
http://ドメイン:9999/dira/index.html
http://ドメイン:9999/dira/page1.html
http://IPアドレス:9999/dira
http://IPアドレス:9999/dira/index.html
http://IPアドレス:9999/dira/page1.html
は、アクセス可能とするが、
http://ドメイン/
http://IPアドレス/
はエラー(本当に存在していない状態)にするということです。
    • good
    • 0
この回答へのお礼

回答ありがとう御座います。

お礼日時:2010/09/22 10:15

ムリね。



ドメインがないエラーはブラウザのエラー画面が返るけど
サーバに到達した場合のエラーはHTTPサーバが返すから。

せいぜいできて
・実際に存在しない似たようなドメインに飛ばす
・同じHTMLを作成してごまかす
くらいだわ。

あ、でも、もしサーバにSSL導入していないなら
https://ドメイン/にとばすのはありかもね。
確か同じエラー画面が返る筈・・・。
その前にセキュリティの警告が出ちゃうかしら。

やっぱりダメね。
    • good
    • 0
この回答へのお礼

回答ありがとう御座います。

お礼日時:2010/09/22 10:16

んー、っと、



つまり、
http://hogehogehoge.com/dira
はリクエストを通して、
http://hogehogehoge.com/
はリクエストはNGかつ、それが存在していないような
ようにするということですか?
DNSに登録されており、別フォルダがアクセスできるなら
無意味だとは思いますが。

ServerTokensをコメントアウトするとかはもありですけど・・・

質問者さんの期待する動作ではないかもしれませんね。
    • good
    • 0
この回答へのお礼

回答ありがとう御座います。

お礼日時:2010/09/22 10:16

無理なんじゃないですか。



クライアントがどのアドレスにアクセスしようとしてるかは、ポート80に接続されてgetコマンドが送信されるまでわかりませんよね。
それに対し、サーバーが存在しない場合は、ポート80への接続自体が失敗するわけですから。

リダイレクトとかしても、一旦接続できたことはばれちゃうんじゃないでしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとう御座います。

お礼日時:2010/09/22 10:16

確認したいんだけど



・ルートには何も置いていないってこと?
・index.htmlはIndexes?
・http://ドメイン/index.htmlもエラーになるの?
・そもそも現在http://ドメイン/でアクセスするとどうなるの?
    • good
    • 0
この回答へのお礼

>・ルートには何も置いていないってこと?

置かないつもりです。


>・index.htmlはIndexes?

はい。


>・http://ドメイン/index.htmlもエラーになるの?

ルートにはインデックスを置かないつもりです。
置いた場合は、
「http://ドメイン/index.html」でその内容を表示して構いません。


>・そもそも現在http://ドメイン/でアクセスするとどうなるの?

現在はまだ何もありません。
設定次第です。

どこかのページに飛ばすか、エラーコード返すかなどが一般的かもしれませんが、
ちゃんと目的のURLを打たずに、例えばランダムにIP打って適当なサーバを探してアクセスしてくるような人には、サーバが存在しないかのように振る舞いたいんです。

fire foxでデタラメなurlを入力すると、下記の画面になります。

= = = = = = = = = =
サーバが見つかりませんでした

www.konna_server_ha_arimasenn.com という名前のサーバが見つかりませんでした。

* www.example.com を間違えて ww.example.com と入力するなど、アドレスを間違って入力していないか確認してください。

* 他のサイトも表示できない場合、コンピュータのネットワーク接続を確認してください。

* ファイアーウォールやプロキシでネットワークが保護されている場合、Firefox による Web アクセスが許可されているか確認してください。
= = = = = = = = = =

これと全く同じ状態にしたいんですが、できますか?

お礼日時:2010/09/17 14:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報