Nginx + GeoIp = Блокировка не нужных стран, но пропуск ботов.

Здарова так!
Чет давно небыло меня туда сюда, работ жопа, жопа работа и все в таком духе.
Вообщем чето прибило поэкономить трафик да нервы.
Уся байда на nginx пахает + geoip от махмайнд.

Вообщем фигачем:
создайте себе директорию какую нибудь и запилите себе туда вот это.

wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
gunzip GeoIP.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz

раз на раз два! со мною вся моя ботва гыгыгыггы)
В конфиг nginx фигачим(секция http):

geoip_country ваша диря/GeoIP.dat;
geoip_city ваша диря/GeoLiteCity.dat

далее в fastcgi_params:
фигачем нужное нам хамно
fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
во, для нашей задачи это будет в полне достаточно.
далее в виртуальных хостах я зафигачил

map $geoip_country_code $allow {
default 1;
RU 0;# ну типо мне нужна тока россия нафига нам другие страны )
}

map $http_user_agent $deny {
default $allow;
~*google|yandex|bing|mail.ru|msn|Yahoo|Rambler 0;
}

ваще долго бошку ломал.
Ну и в секции уже server там location фигачим

if ($deny) {
return 444;
}

усе в ожуре теперь. нефиг тратить ресурсы на не нужные страны

Вам также может понравиться

About the Author: Тупой прогер

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.