微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

nginx中很少有条件可以满足

如何解决nginx中很少有条件可以满足

我目前正在尝试允许满足以下任何条件的任何人访问Nginx中的文件夹:

  • 从10.0.0.0/24子网访问。
  • 从192.168.1.0/24子网访问并进行身份验证。

我在该位置有以下代码

location /private {
        satisfy any;

        allow 10.0.0.0/24;
        deny all;

        auth_basic      "Admin access";
        auth_basic_user_file    /etc/Nginx/.htpasswd;
}

但是这不起作用,因为我希望允许来自10.0.0.0/24(无身份验证)的任何人或来自192.168.1.0/24并进行身份验证的任何人的访问。

上面的代码可以让未经身份验证的10.0.0.0/24人和所有进行身份验证的人进入,因此我只允许192.168.1.0/24中的人进行身份验证,在其他情况下,它将拒绝访问。 / p>

解决方法

一旦我尝试执行相同操作,仅凭allow / deny / auth规则就无法做到。您可以尝试做的是

map $remote_addr $disallow {
    ~^10\.0\.0\.     "";
    ~^192\.168\.1\.  "";
    default          1;
}
server {
    ...
    location /private {
        if ($disallow) { return 403; }
        satisfy any;

        allow 10.0.0.0/24;
        deny all;

        auth_basic      "Admin access";
        auth_basic_user_file    /etc/nginx/.htpasswd;
   }
   ...
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。