В этом ответе предполагается, что модуль уже установлен и работает, существует множество хороших руководств по его установке, поэтому я пропущу его.
Вы можете отобразить geoIP с помощью:
geoip_country /path/to/GeoIP/GeoIP.dat;
map $geoip_country_code $not_auth_required {
default no;
ZZ yes;
YY yes;
XX yes;
}
И затем установить базовый аутентификатор для всех, кроме тех, которые:
server {
listen 80;
root /foo/bar/baz;
auth_basic “Wrong Country";
auth_basic_user_file /etc/nginx/.htpasswd; #typical user:$hash auth.
if ($not_auth_require = yes) {
auth_basic off;
}
location / {
#do things
}
}
Теоретически эта логика должна сработать, поскольку вам нужен белый список, а не черный список.Я надеюсь, что помог