Nginx geoipblocking 和允许 LAN IP

Nginx geoipblocking 和允许 LAN IP

我想使用 geoip 来屏蔽除白名单国家和局域网之外的 IP。第一部分工作正常,第二部分则不行。在互联网上搜索时,我找到了代码 LH(本地主机)和 LN(本地网络),但它们都不起作用。

我正在使用标准的操作方法代码进行阻止。

nginx.conf中相关http{}部分:

geoip_country /usr/share/GeoIP/GeoIP.dat;
   map $geoip_country_code $allowed_country {
    default no;                              
    US yes;
   }

sites-available/default 中的相关服务器{}部分:

block countries
      if ($allowed_country = no) {
        return 444;
      }

任何建议将不胜感激!

更新:

$geoip_country_code 变量在 LAN IP 访问时返回“-”,但向 geoip_county 块添加“- yes;”也不起作用。

答案1

我找到了一个解决方案 - 不知道它是否“干净”。如果之前匹配了 lan IP 条件,则只需覆盖 $allowed_country 变量即可。

geo $lan-ip {
默认否;
192.168.1.0/24 是;
}

并且这个区块在“#block countries”部分之前

如果 ($lan-ip = yes) {
设置 $allowed_country yes;
}

答案2

您还可以执行以下操作:

map $geoip_country_code $allowed_country {
    default no;
    '' yes;
    US yes;
}

虽然它不仅适用于 LAN/私有网络 IP 地址,也适用于您的 GeoIP 数据库未处理的所有地址。

相关内容