给定以下通过 Apache 2.2.9 提供的 PHP 5.1.6 代码:
<?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 进行上述调用,它会重置连接。
RST,ACK
我什至用 Wireshark 看过它,它会在发送请求后发回一大堆数据包。
做wget localhost/test.php
(从有问题的机器)工作正常,但做wget badhost/test.php
(从另一台机器)也显示连接重置错误。也许 Apache 正在对 404 的远程请求进行某种反向 IP 查找并崩溃?
编辑:经过进一步调查,事实证明这是一些网络问题,托管设施和我们办公室之间的 404 因连接重置而被杀死。所以,关闭是因为这里的任何人都无法回答;-) 谢谢!