如何授予对 nGinx 中 GeoIP [国家] 阻止的特定 IP 地址的访问权限?

Posted

技术标签:

【中文标题】如何授予对 nGinx 中 GeoIP [国家] 阻止的特定 IP 地址的访问权限?【英文标题】:How to grant access to a specific IP address that is blocked by GeoIP[country] in nGinx? 【发布时间】:2013-06-20 20:39:44 【问题描述】:

找不到解决方法。 Here 是我阻止访问该国家/地区的方式,同时我需要访问来自被阻止国家/地区的特定 IP。

【问题讨论】:

【参考方案1】:

终于找到了解决这个问题的办法。

1) 在 nginx.conf 中添加

http 

    geoip_country /usr/share/GeoIP/GeoIP.dat;

    map $geoip_country_code $allowed_country 
        default no;
        LV yes; # in my case it is Latvia (allowed country, but all other are not)
    

    geo $exclusions 

        default 0;

        123.123.123.123 1;  # here comes allowed IP that is in blocked country list

    


2) 在您的 vhost 配置服务器 容器中

if ($allowed_country = yes) 
    set $exclusions 1;



if ($exclusions = "0") 
    return 403;

主要思想来自HERE

【讨论】:

【参考方案2】:

在 http 块中

geoip_country /usr/local/share/GeoIP/GeoIP.dat;

map "$geoip_country_code:$remote_addr" $allowed_country 
    default yes;
    "~..:10.11.12.13" yes;
    "~..:11.12.13.14" no;
    "~TR:.*" no;

在服务器块中

if ($allowed_country = no) 
    return 403;

【讨论】:

以上是关于如何授予对 nGinx 中 GeoIP [国家] 阻止的特定 IP 地址的访问权限?的主要内容,如果未能解决你的问题,请参考以下文章

nginx geoip city 如何只使用英文字符?

nginx GeoIP 缓存密钥

NGINX 按国家阻止并排除机器人

使用 nginx 运行 geoip 模块

nginx 和 PHP GeoIP 模块的内部错误 500

NGINX GeoIP 和在服务器级别检测移动设备