次のPHP5.1.6コードがApache2.2.9を介して提供されているとします。
<?php
header("HTTP/1.1 404 Not Found");
このファイルを(任意のブラウザで)参照すると、「接続リセット」メッセージが表示されます。(Firefoxは「ページの読み込み中にサーバーへの接続がリセットされました」と表示し、Chromeは「staging.neopets.comへの接続が中断されました」と表示します。ヘッダー呼び出しの後に本文があるかどうかは関係ありません。
httpd.conf
すべてのリクエストをフロントコントローラースクリプトで実行するように強制する書き換えルールがあります。これはそれが何年もの間どのように機能したかです。フロントコントローラーはリクエストをルーティングしようとしますが、ルーティングできない場合は、応答コードを404に設定し、エラーコピーを表示して、終了します。どういうわけか、今日それは気を失い、いつでも爆破することにしました
error.log
何も表示されません。 access.log
404として処理されているリクエストを示しています。
192.168.0.2 - - [26/Jan/2012:12:03:11 -0800] "GET /text.php HTTP/1.1" 404 20 "-" "Mozilla/5.0 (X11; Linux i686; rv:8.0.1) Gecko/20100101 Firefox/8.0.1"
Apacheの設定は何ヶ月も触れられていません。他のすべてのヘッダー応答(401、403、200、302など)は正しく機能し、他のすべては完全に正常ですが、何らかの理由でPHPに上記の呼び出しを行わせると、接続がリセットされます。
私はWiresharkでそれを見たことがありRST,ACK
、リクエストが送信された後、大量のパケットが返送されます。
wget localhost/test.php
(問題のマシンから)実行すると正常に機能しますが、(wget badhost/test.php
別のマシンから)実行すると接続リセットエラーも表示されます。たぶん、Apacheは404のリモートリクエストに対してある種の逆IPルックアップを実行していて、メルトダウンしていますか?
編集:さらに調査した後、ホスティング施設と私たちのオフィスの間の404が接続のリセットで強制終了されるネットワークの問題であることが判明しました。だから、ここの誰もが答えることができるものではないので、閉じます;-)ありがとう!