Как ограничить доступ для других стран через nginx?

Пользователь

от elissa , в категории: Другие , 7 месяцев назад

Как ограничить доступ для других стран через nginx?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от brook , 7 месяцев назад

@elissa 

Для ограничения доступа для других стран через Nginx вы можете использовать модуль GeoIP. Этот модуль позволяет определить местоположение IP-адреса и принять решение о доступе на основе его географического положения.


Вот пример конфигурации Nginx для ограничения доступа для всех стран, кроме России:

  1. Установите модуль GeoIP:
1
sudo apt-get install libnginx-mod-http-geoip


  1. Загрузите базу данных GeoIP для стран:
1
2
sudo wget -O /etc/nginx/geoip.conf.gz https://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
sudo gunzip /etc/nginx/geoip.conf.gz


  1. В файле конфигурации Nginx (/etc/nginx/nginx.conf или /etc/nginx/conf.d/default.conf) добавьте следующую секцию:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
http {
    ...
    geoip_country /etc/nginx/geoip.conf;

    map $geoip_country_code $allowed_country {
        default no;
        RU yes;
    }

    server {
        ...

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

        ...
    }
    ...
}


  1. Перезапустите Nginx:
1
sudo systemctl restart nginx


Теперь Nginx будет блокировать доступ на основе географического положения IP-адресов, разрешая доступ только для России.


Можно изменить это правило в соответствии с вашими потребностями. Вы можете указать список стран, разрешенных для доступа, или же запретить доступ конкретным странам, добавив/изменяя правила в секции map в соответствующем формате.