白名单配置参考: https://blog.csdn.net/weixin_44953227/article/details/126227433
1、介绍
nginx的remote_addr 的地址是防护墙、F5的地址, 客户端真实的IP地址是在 x_forwarded_for中的。
该方案是在每个域名中判断一个 x_forwarded_for 中是否有系统要拒绝的IP地址,如果有就返回400,不再往后代理。
2、编写IP黑名单配置文件
在Nginx的安装目录下,添加黑名单文件 x_forwarded_for_deny.conf
编写例子如下:
map $http_x_forwarded_for $x_forwarded_for_allowed {
default allow;
# 拒绝一个IP地址
#~\s*192.168.0.100$ deny;
~\s*192.168.0.100[,]*.*$ deny;
# 拒绝一个网段IP地址
~\s*192.168.0.\d+$ deny;
# 下面继续列出想要的IP地址
# ....
# 也可以额外添加黑名单的文件
include blockip*.conf;
}
额外添加黑名单的文件 blockip.conf
~\s*192.168.0.98$ deny;
~\s*192.168.0.99$ deny;
~\s*8.8.8.8$ deny;
提醒:这个文件中即使没有一个IP地址, 系统访问也还是正常的。
3、使Nginx对IP黑名单起效果
编辑Nginx的nginx.conf文件, 使NginxIP黑名单起效果:
#找到http节点:
http {
# ...
# 白名单的相关配置文件引入
# ...
# 引入黑名单配置的文件
include x_forwarded_for_deny.conf;
# 找到对应端口的server节点
server {
listen 80;
#...
#每个域名的location中需要添加判断
#location / {
#if ( $allowed = "deny" ) { return 400; }
# proxy_pass .....;
#}
#...
# 白名单的相关配置
# ....
#在白名单之后,添加黑名单的配置
if ( $x_forwarded_for_allowed = "deny" ) {
return 400;
}
}
}
4、重载Nginx
cd nginx的安装目录
./sbin/nginx -s reload
拒绝你设置好的IP地址访问, nginx access日志用会有拒绝的IP地址日志,放回状态是400。
在黑名单的IP地址的电脑中,访问系统, 返回了错误400的页面。