通过IP阻止/拒绝nginx连接的有效方法

通过IP阻止/拒绝nginx连接的有效方法,nginx,Nginx,我想使用nginx通过IP过滤几个不同的端点。我当前的解决方案是为每个端点剪切并粘贴以下代码: location /api0 { allow 123.45.67.89; allow 98.765.43.21; deny all; ...... } location /api1 { allow 123.45.67.89; allow 98.765.43.21;

我想使用nginx通过IP过滤几个不同的端点。我当前的解决方案是为每个端点剪切并粘贴以下代码:

    location /api0 {
        allow 123.45.67.89; 
        allow 98.765.43.21; 
        deny all;
        ......
    }

    location /api1 {
        allow 123.45.67.89; 
        allow 98.765.43.21; 
        deny all;
        ......
    }

    etc
有没有更有效的方法来设置这些IP筛选器?是否可以设置一个组,以便我可以将其用于配置文件中的所有端点

我这里的主要问题是,有时需要更改IP地址,这意味着我必须手动剪切和粘贴IP,然后重新启动nginx


谢谢

您可以将这些指令放在服务器块中,它们将应用于服务器块中的所有位置

或者,如果不希望规则出现在所有位置,可以将这些行

allow 123.45.67.89; 
allow 98.765.43.21; 
deny all;
放入一个单独的文件,例如
/etc/nginx/allowlist
,然后在必要时包括该文件:

    location /api0 {
        include allowlist;
        ......
    }

    location /api1 {
        include allowlist;
        ......
    }

谢谢-如何将“allowlist”加载到nginx中?@vgoklani,带有
include语句,如示例中所示。@vgoklani yes,当您使用类似于
allowlist
的相对路径时,它相对于
/etc/nginx
,因此它变成
/etc/nginx/allowlist
。至于第二个问题,我认为您不能将其保存为变量,但可以对同一个或多个文件重复
include
语句。实际上,它就像一个全局变量,它只插入包含文件的内容,而不插入其他内容;大概可以定义多个文件,每个文件都包含不同的IP地址组,通过连续的include语句对它们进行堆栈,最后在末尾添加一个“deny all;”语句。@vgoklani是的,这是可能的。