load balancer后端nginx封IP的方法
周末发现在个IP恶意访问,我们就想先封掉这个IP地址。
我们的环境是前端有个load balancer,后端有几台WEB服务器。load balancer上不好封IP地址,那就只能配置在后端WEB服务器的nginx上了。
很简单,我很快就配置上去了,如下面这样的:
deny 82.245.163.1;
allow all
发现不起作用,仔细想了一下,HttpAccessModule应该是取客户端真实IP的,而在后端WEB服务器上,客户端上的真实IP是在头部的X-Forwarded-For内。
然后就改成如下的方式封IP:
set $allow true;
if ($http_x_forwarded_for ~ " ?82.245.163.1$") {
set $allow false ;
}
if ($allow = false) {
return 403;
}
测试一下,发现可以了。