我有 nginx.conf,需要检查客户端请求 IP$remote_addr
是否在 IP 范围内?我的 IP 范围是123.132.123.15
( 123.132.123.50
15 - 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;
}