Блокування трафіку з окремих країн за допомогою Nginx та GeoIP
Блокуємо паразитний трафік до сайту з певних країн безкоштовно, без реєстрацій та sms ;)
-
Зібрати nginx з опцією –with-http_geoip_module. Як це зробити написано тут
-
Встановити бази GeoIP
apt-get install geoip-database libgeoip1
-
Оновити бази до останньої версії
mv /usr/share/GeoIP/GeoIP.dat /usr/share/GeoIP/GeoIP.bak wget https://dl.miyuru.lk/geoip/maxmind/country/maxmind.dat.gz gunzip maxmind.dat.gz mv maxmind.dat /usr/share/GeoIP/GeoIP.dat
-
В /etc/nginx/nginx.conf в секції http блокуємо наприклад роісію та Пакистан
http { ... geoip_country /usr/share/GeoIP/GeoIP.dat; map $geoip_country_code $allowed_country_mysite { default yes; RU no; PK no; } ... }
Можно навпаки заблокувати всіх, залишити тільки Неньку
http { ... geoip_country /usr/share/GeoIP/GeoIP.dat; map $geoip_country_code $allowed_country_mysite { default no; UA yes; } ... }
Коди країн тут.
-
Для потрібного сайту блокуємо доступ із заборонених країн
server { ... location / { if ($allowed_country_mysite = no) { return 444; } } ... }
-
Перевіряємо конфіги та перезавантажуємо конфігурацію
nginx -t nginx -s reload