Nginx GEOIP

Подключаем репозитории rpmforge и epel

yum install geoip geoip-devel

Далее нужно пересобрать nginx с geoip (—with-http_geoip_module Полная наша команда ./configure —prefix=/usr/local/nginx —conf-path=/usr/local/nginx/etc/nginx.conf —http-log-path=/var/log/nginx/access.log —pid-path=/var/run/nginx/nginx.pid —user=apache —group=apache —without-mail_pop3_module —without-mail_imap_module —without-mail_smtp_module —with-http_stub_status_module —with-http_geoip_module).

Открываем nginx.conf (/usr/local/nginx/etc/nginx.conf),  дописываем в секцию http следующий блок директив:

geoip_country /usr/share/GeoIP/GeoIP.dat;
map $geoip_country_code $bad_country {
default 1;
include /usr/local/nginx/etc/good_countries; }

 

Этот блок map, означает, что все страны находящиеся в базе данных, являются запрещенными по умолчанию, а в файле good_countries, будут перечислены разрешенные страны. Если у вас например ситуация, когда разрешенных стран больше чем запрещенных, можно легко инвертировать данную логику и создать файл bad_countries со списком запрещенных стран, разрешив все остальные.

Теперь настройки хоста. В секции server атакуемого хоста (/usr/local/directadmin/data/users/Имя_пользователя/nginx.conf) прописываем:
if ($bad_country){
return 444;
}

Теперь вернемся к файлу good_countries (Если отсутствует, то необходимо создать. touch /usr/local/nginx/etc/good_countries). Тут все предельно просто, страны, которым разрешен доступ на сайт, перечислены в следующем формате:

TM 0;
UA 0;
UZ 0;
RU 0;

и т.д.

То есть, что-бы разрешить какую-либо страну, достаточно добавить ее двух буквенный код и 0, после чего перезагрузить конфиг nginx

Опубликовано в nginx, Установка/Настройка ПО

Рубрики