在Nginx中,我正在检查一个IP是否来自被阻止的国家。如果是,那么访问者会得到一个403。我需要添加白名单IP的能力,以允许他们在即使他们是被阻止的国家的一部分。
我更愿意将nginx.conf位置的IP加入白名单,这样我就不需要更新30多个虚拟主机文件了。我该怎么做?
在/etc/nginx/sites-enabled的每个nginx虚拟主机文件中
location / {
if ($allowed_country = no) {
return 403;
}
try_files $uri $uri/ /index.php$is_args$args;
}
国家/地区列表在/etc/nginx/nginx.conf中创建
## GEOIP settings
geoip_country /usr/share/GeoIP/GeoIP.dat;
map $geoip_country_code $allowed_country {
default yes;
RU no;
BR no;
UA no;
PH no;
IN no;
CN no;
}
1条答案
按热度按时间62lalag41#
要在geoip国家/地区和IP地址上设置过滤器,您需要geo module,结果如下:
加上nginx.conf中的Map
这应该是可能的,但map指令必须在http上下文中。
我建议在每个vhost中都有一个include,在一个单独的文件中有geoip设置,这样会更灵活。