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中的人进行身份验证,在任何其他情况下,它都会拒绝访问。

有一次我试着做同样的事情,但只使用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;
}
...
}

最新更新