我目前正试图允许任何符合以下条件的人访问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;
}
...
}