/ #linux #web 

Блокування трафіку з окремих країн за допомогою Nginx та GeoIP

Блокуємо паразитний трафік до сайту з певних країн безкоштовно, без реєстрацій та sms ;)

  1. Зібрати nginx з опцією –with-http_geoip_module. Як це зробити написано тут - https://bender.kr.ua/howto-lemp-install/
  2. Встановити бази GeoIP apt-get install geoip-database libgeoip1
  3. Оновити бази до останньої версії 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
  4. В /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; } ... } Коди країн тут - https://dev.maxmind.com/geoip/legacy/codes/iso3166/.
  5. Для потрібного сайту блокуємо доступ із заборонених країн server { ... location / { if ($allowed_country_mysite = no) { return 444; } } ... }
  6. Перевіряємо конфіги та перезавантажуємо конфігурацію nginx -t nginx -s reload

Посилання

Author

Олександр Бобилєв

Залишаю собі право використовувати ненормативну (але інформативну) лексику там, де звичайні слова втрачають сенс і не відображають всієї палітри почуттів, від споглядання навколишньої дійсності.