Модная штучка

Уютный сервер на FreeBSD: определяем страну посетителя через nginx

Декабрь 12, 2011 | ITшное, Администрирование | Модные словечки , , , | Оставить свое мнение

И снова здравствуйте!

Этот небольшой пост будет о том, как легко и непринужденно сделать определение страны посетителя через 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

Наследить..