Nginx 下根据ip进行访问控制

nginx 运维 · ez · 于 1个月前 发布 · 81 次阅读

在Nginx中,可以使用"allow"和"deny"指令来实现IP访问限制。"allow"指令用于允许特定的IP地址或IP地址段访问服务器,"deny"指令用于阻止特定的IP地址或IP地址段访问服务器。

详细指南见:Module ngx_http_access_module

需求与场景

现有应用,先经过waf或负载均衡才访问到应用上。

需要对应用的/admin目录进行访问控制,非指定ip段是不能访问的。

限制访问有两种办法,一个是在waf上进行配置。另外是在应用上配置。

遇到的问题

在应用上进行配置时,应用服务器获取的ip不是客户端真实ip,而是waf或负载均衡的ip。在这个情况下按nginx的普通配置是不起作用的。

需要做一下ip转换,从头信息里拿到真实ip才行。

实现

    location /admin {
        set_real_ip_from 125.125.62.88; #设置信任ip,从这些ip访问进来的,可以从 header中获取ip地址
        real_ip_header X-Real-IP; # 设置真实ip地址的参数名
        real_ip_recursive on; # 如果多层允许递归获取
        allow 123.127.171.128/25; # 方行指定的ip段,这个是 CIDR表示法
        deny all; #禁用所有访问
    }

本文由 ez 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。

共收到 0 条回复
没有找到数据。
添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册