Уютный сервер на FreeBSD: определяем страну посетителя через nginx
Декабрь 12, 2011 | ITшное, Администрирование | Модные словечки freeBSD, geoip, nginx, php | Оставить свое мнениеИ снова здравствуйте!
Этот небольшой пост будет о том, как легко и непринужденно сделать определение страны посетителя через nginx, что бы программисту не нужно было с этим заморачиваться.
Итак, как мы помним из предыдущих серий, при установке nginx я выбрал модуль geoip, поэтому порт /usr/ports/net/GeoIp/ уже должен быть установлен, если это не так то вам нужно поставить его дополнительно и потом переустановкить nginx с этим модулем.
Далее качаем бесплатную (или платную, кто что может =) версию бинарной базы geoip:
cd /usr/local/etc/nginx/ mkdir data mkdir data/geo && cd data/geo wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz gunzip GeoIP.dat.gz
А потом всего лишь добавляем немного конфига:
geoip_country /usr/local/etc/nginx/data/geo/GeoIP.dat;
в секцию http файла nginx.conf (если у вас файл данных геоайпи лежит в другом месте то естественно указываете его)
И что бы этот параметр прокидывался скриптам, добавляем
# GeoIP fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code; fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;
В fastcgi_params.
service nginx restart
И вуаля, в $_SERVER видим что то типа
[GEOIP_COUNTRY_CODE] => NL
[GEOIP_COUNTRY_NAME] => Netherlands
Наследить..