Привет, моя заметка настройка nginx geoip фильтрация.
Недавно мне поставили задачу, заблокировать весь трафик на сервер, но оставить только сети России и Испании.
В предыдущей статье я сделал все через системный файрвол ipfw.
Но вспомнилось, что есть способ и с помощью самого вэб сервера nginx фильтровать трафик.
Вот что получилось.
Для этого нам понадобится собрать nginx с модулем geoip и свежую базу ip
Качаем базу ip адресов.
# fetch http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
Распаковываем.
# gunzip GeoIP.dat.gz
Копируем базу.
# cp GeoIP.dat /usr/local/etc/nginx/
После пере собираем нгинс.
В http конфиг nginx
geoip_country /usr/local/etc/nginx/GeoIP.dat; map $geoip_country_code $allowed_country { default 0; RU 1; ES 1; }
А это в сам виртуальный хост добавить.
if ($allowed_country = '0') { return 403; break; }
Перезагружаем вэб сервер.
# /usr/local/etc/rc.d/nginx restart
Вот как бы и вся настройка nginx geoip фильтрация.
Но не забывайте о пагубных последствий сео в этом способе.
По-хорошему нужно разрешать еще поисковых ботов иначе на сайте может просесть трафик, но в моем случае на сео было всем пофиг.
nginx разделение логов.
nginx блокируем плохих ботов.
joomla nginx redirect.
nginx ssl letsencrypt редирект на другой домен.
nginx webp правило отображения картинок.