geoiptpl_208_130Иногда возникает ситуация, когда необходимо заблокировать доступ к сайту пользователям, находящимся в определенных странах. Для этого мы настроим фильтр по IP адресам, находящимся в нежелательных странах. Конечно, пользователи  всегда смогут воспользоваться прокси и прочими вариантами маневра, но в большинстве случаев фильтра по странам нам хватит. Итак, задача ясна, начнем действовать. В наших руках сервер nginx, установленный на Debian. Мы будем использовать модуль GeoIP для определения принадлежности IP к стране.

Для начала нам необходимо проверить, скомпилирован ли nginx с поддержкой HttpGeoipModule.

Для этого введем команду:

Если в выдаче мы найдем значение —with-http_geoip_module, то все впорядке. В случае с Debian модуль из пакетного nginx уже присутствует, так что пойдем дальше, считая, что с nginx все как надо.

Установим  базу GeoIP:

 База GeoIP располагается в файле /usr/share/GeoIP/GeoIP.dat.

Обновим базу до последней актуальной.

Теперь настроим сам nginx.

Впишем следующее содержание в блок http, перед всеми инклудами:

 Данным конфигом мы запретили сайт для пользователей Китая, Кубы и Кипра.

Для того, чтобы разрешить использование сайта только пользователям определенных стран, перепишем конфиг следующим образом:

 Теперь сайт будет доступен только пользователям из России и Украины.

Осталось сделать последний штрих — запретить пользователям, которые подпадают под запрет, использовать наш сайт. Будем отправлять им ошибку 404. Для этого зайдем в конфиг хоста и в секции server {} добавим следующие строки:

Применим новые настройки nginx:

Если все настроили верно — больше нежелательные пользователи нас не побеспокоят.