NGINX. Блокировка пользователей по GeoIP — различия между версиями
Root (обсуждение | вклад) |
Root (обсуждение | вклад) |
||
| Строка 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 и проверяем