最近现网一个内部接口受到了”攻击“,导致后端的PHP服务无法响应,从而影响到其它接口的正常服务。为了先恢复其它接口(比较重要)的正常运行,想从Nginx层面先禁用掉接口调用(为什么不直接禁用IP,因为”攻击“者也是内网服务,而且使用了内部代理),其中主要的配置如下:
server {
...
try_files $uri $uri/ /index.php;
location /the/api {
return 403;
}
location ~*.php$ {
fastcgi_pass 127.0.0.1:9000;
....
}
....
}
但是,配置重新加载后,nginx并未按预期将接口请求阻止,请求依然到达了PHP-FPM的9000端口,但奇怪的是接口的请求返回状态码是403。
![1e6cd06320e1575b7be7a2a94e159ea3.png](https://img-blog.csdnimg.cn/img_convert/1e6cd06320e1575b7be7a2a94e159ea3.png)
问题解决
遇事不决,先查日志。查看日志发现,error日志中有大量的针对改接口连接9000端口(PHP-FPM)超时日志,说明Nginx真的在不断转发请求到Nginx,那猜测问题应该是出在return
指令上:return
在重写