nginx:使用带有允许/拒绝指令的地理模块

nginx:使用带有允许/拒绝指令的地理模块

阅读 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

相关内容