Nginx 在if语句中限制IP访问

一些web服务,出于安全考虑是不想让其他人访问到,除了添加登录用户认证外,还可以使用Nginx限制IP访问,只允许指定IP的用户访问站点或者接口。即nginx deny ip access

Nginx中限制IP访问的一般用法是在location中使用allow和deny来限制,如:

    location / {
        allow 127.0.0.1;
        allow 172.0.0.0/8;
        allow 10.10.0.0/16;
        allow 202.106.0.20/32;
        allow 114.114.114.114/32;
        deny all;
    } 

实际应用中由于我们配置了泛解析域名,location中用到了if语句来匹配server_name,而allow和deny指令无法使用在if语句里面。

Nginx deny的用法:
deny
语法:     deny address | CIDR | unix: | all;
默认值:    —
配置段:   http, server, location, limit_except

如果在if语句下使用deny指令会有如下报错:

"deny" directive is not allowed here in /etc/nginx/conf.d/default.conf:21

还有一个问题是Ningx配置是不支持if嵌套的,所以下面使用了set变量的方式来实现嵌套功能,使用return 403来替代deny指令,具体如下:

server {
    listen       80;
    server_name  ~^(?<subdomain>.+)\.sudops\.com$;
                                        
    location / {
        set $myoffice 0;
        if ($host = "subdomain.sudops.com") {
            proxy_pass http://172.30.1.11:2019;
            set $myoffice "${myoffice}1";
        }

        if ($remote_addr !~ "^(127.0.0.1|172.|10.10.|202.106.0.20|114.114.114.114)") {
            set $myoffice "${myoffice}2";
        }

        if ($myoffice = "012") {
            return 403;
        }
    }
}

u2

Related Posts

rancher v2.x 初体验

rancher v2x

python cx-Oracle 驱动安装

安装oracle驱动 cx-Oracle驱动二进制版本下载地…

You Missed

潘多拉魔盒已打开:开源AI攻击平台正在血洗全球防火墙

  • u2
  • 3月 4, 2026
  • 24 views
潘多拉魔盒已打开:开源AI攻击平台正在血洗全球防火墙

雇佣AI员工,花钱上班:开发者的新”职场”荒诞剧

  • u2
  • 3月 1, 2026
  • 46 views
雇佣AI员工,花钱上班:开发者的新”职场”荒诞剧

OpenClaw 完整使用指南:自托管 AI Agent 的架构与实战

  • u2
  • 2月 25, 2026
  • 158 views
OpenClaw 完整使用指南:自托管 AI Agent 的架构与实战

Anthropic 推出 Claude Code Security:AI 驱动的代码安全神器

  • u2
  • 2月 24, 2026
  • 85 views

来自 OWASP 的代码安全检查工具:Dependency-Check,为你消除安全隐患

  • u2
  • 10月 16, 2025
  • 52 views
来自 OWASP 的代码安全检查工具:Dependency-Check,为你消除安全隐患

技术宅如何躲开越来越垃圾的CSDN?

  • u2
  • 4月 11, 2024
  • 42 views
技术宅如何躲开越来越垃圾的CSDN?