
本文旨在解决 Apache2 服务器在使用 `proxy_fcgi` 模块时出现的 “AH01071: Got error ‘Primary script unknown'” 错误。通过分析错误原因,并结合实际案例,提供了一种基于 Apache vhost 配置的解决方案,帮助开发者定位并解决此类问题,提升服务器的稳定性和安全性。
问题描述
在使用 Apache2 作为 Web 服务器,并配置 proxy_fcgi 模块来处理 PHP 请求时,可能会在 Apache 的错误日志中发现如下错误信息:
[proxy_fcgi:error] [pid XXXX:tid YYYYYYYYYYYYY] [client XX.XX.XX.XX] AH01071: Got error 'Primary script unknown'
这个错误通常表示 Apache 无法找到请求的 PHP 脚本文件。这可能是由于多种原因造成的,例如:
请求的 PHP 文件确实不存在。请求的 URL 路径与实际的文件路径不匹配。Apache 的配置不正确,导致无法正确解析 PHP 文件。恶意扫描或攻击尝试访问不存在的 PHP 文件。
解决方案
一种有效的解决方案是在 Apache 的 vhost 配置文件中添加 条件判断,以确保只有当请求的文件存在时,才将请求传递给 PHP-FPM 处理。
步骤 1:编辑 Apache vhost 配置文件
找到并编辑你的 Apache vhost 配置文件。通常,这些文件位于 /etc/apache2/sites-available/ 目录下。
步骤 2:修改 指令
找到处理 PHP 文件的 指令块。例如:
SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost"
在这个指令块中,添加 条件判断:
SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost"
解释:
FilesMatch “.+.ph(ar|p|tml)$”:这个指令匹配所有以 .php、.phar 或 .phtml 结尾的文件。If “-f %{REQUEST_FILENAME}”:这个条件判断检查请求的文件是否存在。%{REQUEST_FILENAME} 是 Apache 的一个变量,表示请求的文件名。-f 是一个测试文件是否存在的操作符。SetHandler “proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost”:如果文件存在,则将请求传递给 PHP-FPM 处理。这里的 proxy:unix:/run/php/php8.1-fpm.sock 指定了 PHP-FPM 的 Unix socket 地址,fcgi://localhost 指定了 FastCGI 协议。 请根据你的PHP-FPM配置进行调整。
步骤 3:保存并重启 Apache
保存修改后的配置文件,并重启 Apache 服务器以使更改生效:
sudo systemctl restart apache2
示例
以下是一个完整的 Apache vhost 配置文件的示例,其中包含了上述的 条件判断:
ServerName example.com DocumentRoot /var/www/example.com Options Indexes FollowSymLinks AllowOverride All Require all granted ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost"
注意事项
确保 PHP-FPM 正在运行,并且 Unix socket 地址配置正确。根据你的 PHP 版本和配置,调整 php8.1-fpm.sock 的路径。定期检查 Apache 的错误日志,以监控服务器的运行状况。此方法虽然可以减少 “Primary script unknown” 错误的数量,但并不能完全消除它。恶意扫描和攻击仍然可能尝试访问不存在的文件。可以配合其他安全措施,例如使用 Web 应用防火墙(WAF)来阻止恶意请求。
总结
通过在 Apache 的 vhost 配置文件中添加 条件判断,可以有效地减少 “AH01071: Got error ‘Primary script unknown'” 错误的数量,并提高服务器的稳定性和安全性。这种方法能够确保只有当请求的文件存在时,才将请求传递给 PHP-FPM 处理,从而避免了不必要的错误。同时,建议定期检查 Apache 的错误日志,并采取其他安全措施来保护服务器免受恶意攻击。
以上就是Apache2 Proxy_FCGI 错误 AH01071:原因分析与解决方案的详细内容,更多请关注php中文网其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1330148.html
微信扫一扫
支付宝扫一扫