阅读 nginx 的ngx_http_access_module的文档,我发现了这一点:
如果规则很多,则使用ngx_http_geo_模块模块变量是更好的选择。
如何使用地理模块允许/拒绝?如果我这样做:
geo $listofips {
default 0;
8.8.8.8 1;
}
server {
# [...]
allow $listofips;
deny all;
}
它给了我以下错误:
/path/to/config:97 中的参数“$listofips”无效
我如何使用 geo 模块进行访问控制?我不能使用 ifs,因为它显然会中断try_files
(请参阅 nginx 的 IfIsEvil)。
答案1
如果不使用 IF,我确信在写这个答案的时候这是不可能的。
在这种情况下看起来是这样的:
geo $trusted_user {
default 0;
8.8.8.8 1;
}
server
{
if ( $trusted_user = 0 ) {
return 403;
}
}
向 NGINX 团队发送建议: https://www.nginx.com/
这个问题是根据以下回复回答的:NGINX - 有条件地允许或拒绝 IP
搜索源“# try_files 因 if 原因无法工作”在“例子”: https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/#examples