NGINX. Блокировка пользователей по GeoIP — различия между версиями

Материал из megapuper
Перейти к: навигация, поиск
Строка 14: Строка 14:
  
  
Скачиваем базу GeoIP
+
Скачиваем базу GeoIP, кладём её в /usr/share/Geoip
 +
 
 +
 
 +
В каталоге с конфигурационными файлами Nginx создаём файл include.d/block.map с нужными блокировками
 +
 
 +
В данном примере запрещаем доступ к сайту пользователям из Китая, Вьетнама и Тайваня
 +
geoip_country /usr/share/GeoIP/GeoIP.dat; 
 +
map $geoip_country_code $allowed_country { 
 +
        default yes;
 +
        CN no;
 +
        VN no;
 +
        TW no;
 +
  }
 +
 
 +
В данном примере доступ к сайту разрешён только пользователям из России и Украины
 +
geoip_country /usr/share/GeoIP/GeoIP.dat; 
 +
map $geoip_country_code $allowed_country {
 +
        default no;
 +
        RU yes;
 +
        UA yes;
 +
  }
  
  

Версия 22:12, 3 марта 2022

Для ограничения доступа к сайту пользователей из определенных стран можно использовать модуль GeoIP. Делаем на примере Debian Buster


Ставим модуль

apt-get install nginx-module-geoip


Проверяем что он появился в /etc/nginx/modules

ngx_http_geoip_module.so


Подключаем модуль в основном конфиге nginx.conf

load_module modules/ngx_http_geoip_module.so;


Скачиваем базу GeoIP, кладём её в /usr/share/Geoip


В каталоге с конфигурационными файлами Nginx создаём файл include.d/block.map с нужными блокировками

В данном примере запрещаем доступ к сайту пользователям из Китая, Вьетнама и Тайваня

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

В данном примере доступ к сайту разрешён только пользователям из России и Украины

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


В блоке server виртуального хоста описываем, что будет возвращать nginx, если совпадёт условие. Например, вернём 403

    if ($allowed_country = no) {
        return 403;
   }

Перегружаем nginx и проверяем