Nginx - 仅阻止对除指定 IP 范围之外的所有路径部分的访问

Nginx - 仅阻止对除指定 IP 范围之外的所有路径部分的访问

我正在尝试阻止通过 Nginx 访问部分路径,除非源 IP 在指定范围内。

思考我已经通过多次反复尝试解决了这个问题,但是当路径包含查询字符串时,我似乎遇到了麻烦:

不应该起作用(除非在指定的 IP 范围内):

/登录

/登录/

应该有效(甚至公开)

/登录/其他

/[电子邮件保护]&类型=专业

当前位置区块:

   location ~ ^/(login|login/)$ {
    allow 10.0.102.0/24;
    deny all;
    return 403;
}

欢迎提出任何建议,谢谢!

答案1

以下配置仅允许从 IP 地址范围 192.168.1.0/24 和 192.168.2.0/24 访问对 /login URL 路径的传入请求:

server {
    ...

    location /login {
        if ($remote_addr ~ "^192\.168\.1\.\d{1,3}$") {
            allow all;
        }
        if ($remote_addr ~ "^192\.168\.2\.\d{1,3}$") {
            allow all;
        }
        deny all;
    }

    ...
}

相关内容