最近有客户反馈,他使用宝塔面板搭建的网站在执行特定功能时会暂时无法访问,尽管换用其他网络依然能够正常访问。过一段时间,网站又会自动恢复。这种现象看似该客户的IP地址被暂时屏蔽。经过专业的运维分析,最终找到了问题根源。
问题排查
排查宝塔防火墙
最初,xiaoz怀疑可能是宝塔面板中的某个防火墙导致了拦截。然而,经检查发现客户的宝塔面板未安装'Nginx免费防火墙'。
分析网站日志
继续检查网站的日志,发现Nginx返回了444状态码,这意味着服务器没有返回任何信息并关闭了连接,通常用于拒绝恶意请求。
检查Nginx配置
追根溯源,我细查了Nginx的配置文件,寻找可能触发444状态码的规则。使用以下命令遍历所有.conf文件后,未能找到与444
状态码相关的具体设置。
# 进入宝塔的Nginx目录下
cd /www/server/nginx/conf
# 使用下面的命令查找444
grep -r --include="*.conf" "444" ./
肉眼继续排查Nginx所关联配置,看到有这么一行:include /www/server/panel/vhost/nginx/*.conf;
随后,我进入了/www/server/panel/vhost/nginx/目录,并发现了一个名为fee_waf.conf
的文件。查看该文件时,注意到其中包含了对LUA脚本的调用。
我开始怀疑是这个配置引起,于是将fee_waf.conf
更名为fee_waf.conf.bak
进行备份,然后重启Nginx,最后问题得以解决。
解决办法
该客户使用的腾讯云预装宝塔面板,在宝塔面板后台中,未列出fee_waf配置,推测此项可能为默认启用且无法在后台查看,这对新手用户来说可能较为不便。
对于这种情况的解决办法就是直接将/www/server/panel/vhost/nginx/fee_waf.conf
更名为fee_waf.conf.bak
,然后重启Nginx
如果您是自己安装的宝塔面板,请在宝塔面板后台"软件商店 - 已安装"看看是否安装了"Nginx防火墙或Apache防火墙"导致,可以单独设置防火墙,对指定网站放行,或者直接关闭这个防火墙。
以上问题仅供参考,当遇到网站故障时还需要具体问题具体分析