
Привет, моя заметка настройка 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 правило отображения картинок.