我正在使用nginx latest web server 。 我如何检查$remote_addr ip是否在指定的CIDR range并return appropriate error code 。
如果IP不在特定的CIDR IP范围内,我想返回特定的错误代码。
我如何做到这一点的CIDR IP范围 ? 例如
您可以使用geo指令来指定IP地址范围。
这是一个例子:
geo $block_these_turkeys { default 0; 192.0.2.0/24 1; 198.51.100.0/24 1; 203.0.113.0/24 1; 2001:db8::/32 1; }
这必须位于任何server块之外的http块中。
它将variables$block_these_turkeys设置为给定值,这取决于IP地址是否与其中一个列表匹配。
稍后,在要使用它的server块中,执行如下操作:
server { .... if ($block_these_turkeys) { return 444; } .... }
通过反转该值,您可以改为允许 IP范围。
geo $block_almost_everybody { default 1; 192.0.2.0/24 0; 198.51.100.0/24 0; 203.0.113.0/24 0; 2001:db8::/32 0; } server { .... if ($block_almost_everybody) { return 444; } .... }