未知的 Apache2 + PHP5 FastCGI 500 错误..由搜索引擎机器人引起?

未知的 Apache2 + PHP5 FastCGI 500 错误..由搜索引擎机器人引起?

我的 Ubuntu 服务器配置了 Apache 2.2.8 和 PHP 5.2.4-2ubuntu5.18,并采用 FastCGI 模式。一切运行正常,但我看到 500 错误,这些错误似乎仅来自访问服务器的机器人。例如 (access.log):

x.125.71.104 - - [16/Nov/2011:10:27:39 +1100] "GET / HTTP/1.1" 500 41377 "-" "Mozilla/5.0 (兼容; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)”

x.40.103.239 - - [16/Nov/2011:11:05:56 +1100] "GET / HTTP/1.0" 500 14717 "-" "Mozilla/5.0 (兼容;mon.itor.us - 免费监控服务;http://mon.itor.us)”

x.249.67.114 - - [14/Nov/2011:20:57:17 +1100] "GET / HTTP/1.1" 500 101 "-" "Mozilla/5.0 (兼容; Googlebot/2.​​1; +http://www.google.com/bot.html)”

x.55.39.85 - - [14/Nov/2011:19:31:06 +1100] "GET / HTTP/1.1" 500 7032 "-" "msnbot/2.​​0b (+http://search.msn.com/msnbot.htm)。

据我了解,当 PHP 进程无法响应 Apache 时,将抛出 500 错误,这可能是由致命的 PHP 错误或 PHP 进程耗尽引起的。所以我的假设是,要么是机器人对服务器的攻击太猛,杀死了 PHP 进程,要么是机器人请求标头中的某些内容导致我的 PHP 脚本出现致命错误?如果有人能就此提供建议,我将不胜感激!

瑞安

答案1

机器人索引您的网站?如果没有,我就不担心了。如果有,请检查 PHP 错误日志(/var/log/php通常是一个很好的默认查看位置)并查看是什么导致 PHP 被机器人绊倒。

他们可能没有向需要它正常运行的脚本提供 GET 参数或 POST 数据。在这种情况下,我会更好地处理请求,404如果脚本正在包装 DB 查询,则可能返回一个(因为除非您提供适当的参数,否则找不到任何内容)。如果他们正在做一些更奇怪的事情,也许返回一个400 Bad Request是合理的。

答案2

请查看此站点以了解其是否有您需要的信息。 http://redmine.lighttpd.net/projects/1/wiki/Docs:PerformanceFastCGI

一直到下面都说“为什么我的 php 应用程序不时返回 500?”

答案3

对于出现 500 错误的情况,此代码的第一行需要指向 unix 套接字,而不是 TCP/IP 地址/端口 - 这是在 Ubuntu 12.10.x 上 - 如果你查看内部,/etc/php5/fpm/pool.d/www.conf你会发现 FPM 已设置为监听 unix 套接字。

FastCgiExternalServer /var/www/php5.external -socket /var/run/php5-fpm.sock
AddHandler php5-fcgi .php
AddHandler php5-fcgi .wfr
Action php5-fcgi /usr/lib/cgi-bin/php5.external
Alias /usr/lib/cgi-bin/ /var/www/

相关内容