有没有什么办法可以让一定范围内的一组ip访问我的网站?(Nginx)

有没有什么办法可以让一定范围内的一组ip访问我的网站?(Nginx)

假设我想允许 192.168.1.1 和 192.168.1.40 之间的 IP 访问我的项目。

Nginx 示例:

  stream {
        #...
        server {
            listen 12345;
            deny   192.168.1.2;
            allow  192.168.1.1/24;
            allow  2001:0db8::/32;
            deny   all;
        }
    }

我必须分别允许每个 IP,或者是否有任何技术可以允许访问给定范围内的 IP?

答案1

按顺序对allowdeny语句进行评估,直到找到匹配项,因此您可以使用五个连续的语句施加到的严格192.168.1.1范围192.168.1.40

例如:

deny  192.168.1.0;
allow 192.168.1.0/27;
allow 192.168.1.32/29;
allow 192.168.1.40;
deny  all;

192.168.1.0/27代表192.168.1.0包含192.168.1.31,其中第一个地址已被前一个语句明确拒绝。

192.168.1.32/29代表192.168.1.32包容192.168.1.39


192.168.1.130对于范围192.168.1.190,首先查看最后一个字节的二进制表示形式:

130 = 10000010
190 = 10111110

因此这可以通过允许10xxxxxx但首先否认1000000x和来表示10111111

例如:

deny  192.168.1.128/31;
deny  192.168.1.191;
allow 192.168.1.128/26;
deny  all;

相关内容