如何检查 nginx 位置中的 IP 范围?

如何检查 nginx 位置中的 IP 范围?

我有 nginx.conf,需要检查客户端请求 IP$remote_addr是否在 IP 范围内?我的 IP 范围是123.132.123.15( 123.132.123.5015 - 50)。有效 IP 需要包含一些特定 IP。有没有不输入列表中 36 个 IP 地址的解决方案。谢谢

答案1

您可以使用ranges和来实现(例如)nginx 地理模块

这是该页面上的示例:

范围示例:

geo $country {
    ranges;
    default                   ZZ;
    127.0.0.0-127.0.0.0       US;
    127.0.0.1-127.0.0.1       RU;
    127.0.0.1-127.0.0.255     US;
    10.1.0.0-10.1.255.255     RU;
    192.168.1.0-192.168.1.255 UK;
}

或者,你可以使用任何计算器(或者,如果你愿意,也可以心算)计算你的范围的 CIDR 符号,然后使用 nginx 阻止它们http 访问模块

对于你的例子来说,它看起来像这样:

location /whatever {
    deny  123.132.123.15/32
    deny  123.132.123.16/28
    deny  123.132.123.32/28
    deny  123.132.123.48/31
    deny  123.132.123.50/32;
    allow all;
}

相关内容