nginx利用x_forwarded_for实现黑名单访问策略

白名单配置参考: 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的页面。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值