2011-01-01 18 views
7

私のPHPページには多くのトラフィックがありますが、変数$_SERVER['HTTP_HOST']は設定されていません。

このトラフィックは1秒あたり1ヒットのようなものです。私はそれが何ができるかわかりませんが、サーバーの負荷を軽減するために私はすべてのPHPページの最上部にこれをやっている:

if (!isset($_SERVER['HTTP_HOST'])) 
    exit; 

は、あなたはこれを引き起こす可能性が何を知っていますか? HTTP_HOSTが設定されていないと終了するのは安全ですか?

普通のユーザーがHTTP_HOSTを設定せずに自分のページにアクセスできますか?

  • PHPのバージョン:5.2.0-8
  • のApache:2.2.3
+0

統計情報はありますか?どのリソースが要求されていますか? IPアドレスは何ですか?他に何か - ユーザエージェントはおそらく? –

+0

注:通常のユーザーは通常のブラウザを使用する可能性が高く、長い間HTTP/1.1を使用しており、そのバージョンには 'Host:...'ヘッダーが必要です。したがって、通常のユーザーが 'Host:...'ヘッダなしであなたのウェブサイトにアクセスする可能性はありますが、実際はそうではありません。 –

答えて

6

Mmmは、「apacheダミー接続」でもかまいません。あなたは "内部ダミー接続"のログにアクセスしているかどうかを調べ、マスターapacheプロセスが自分の子プロセス(自殺など)に注文を送るために使用するか、confを再ロードする必要があります。これらの接続は、HOSTが設定されていない状態でHTTP/1.0で行われます。

http://wiki.apache.org/httpd/InternalDummyConnection

論文の#$! "接続は、周りが(キャッシュの事、ないHTTP/1.1など)多くのバグを作っている!#1のsh#のF#のCKが*の$。一つの 'シンプル' ソリューションあなたのホスト名ベースのVirtuahostにデフォルトのバーチャルホストとしてあなたのメインアプリケーションを提供しているのではありません。このページを手に入れれば、HTTP/1.1のどこかのサポート "を静的なページとして使用すると、HTTP/1.0トラフィックやIPでサーバーにアクセスするすべてのユーザーは、実際のアプリケーションには存在しません。

今年は悪いプロキシ削除すべての発信HTTPトラフィックからのHostヘッダー。しかし、Thesesの悪い人はダムです、私は多くの人がまだホストなしでHTTP/1.0でブラウジングしているとは思わない。

+0

exacltyその...ログに私は内部ダミー接続を持っています。問題はドメインの設定です私はデフォルトのvirutalhostとして私のメインが必要です。 – dynamic

+0

Googleでチェックすると、Apacheのダミー接続を無視して実際のリクエスト処理の前に投げるusefaull mod_rewriteルールがいくつかあります。 – regilero

2

HTTP_HOSTは、要求がに向けするホスト名、クライアントのHTTPリクエストと指定の一部です。適切なサイトを複数サイトの設定で分ける必要があります。

HTTP_HOSTが設定されていない場合、クライアントは非常に古い(HTTP 1.0はHTTP_HOSTをサポートしていない)か、WebサイトのIPに直接要求しています。

あなたのやり方を妨害することはありません。しかし、トラフィックについて心配している場合は、Webサーバーレベルでこれを修正することが賢明かもしれません。

+2

これはおそらく、それらを区別するのにも良い方法です。しかし、 'Host:'ヘッダはHTTP 1.0でサポートされていました。それはHTTP 1.1準拠のために*必須*であることだけです。http://stackoverflow.com/questions/4032412/why-do-wget-has-host-header-in-its-http-request – mario

+0

@mario ah、十分に、ありがとう! –

関連する問題