Jul 12, 2012

MaxMind GeoIP и GeoIPCity на ур-не nginx

http://markeev.labwr.ru/2012/07/maxmind-geoip-geoipcity-nginx.html


Установка бесплатной базы maxmind с данными о городах
1. Настраиваем nginx

sudo vim /etc/nginx/nginx.conf

http {
    geoip_city /usr/local/share/GeoIP/GeoLiteCity.dat;
    ...

2. В fastcgi_params добавляем

sudo vim /etc/nginx/fastcgi_params

### SET FASTCGI Variables ###
fastcgi_param GEOIP_CITY_COUNTRY_CODE $geoip_city_country_code;
fastcgi_param GEOIP_CITY_COUNTRY_CODE3 $geoip_city_country_code3;
fastcgi_param GEOIP_CITY_COUNTRY_NAME $geoip_city_country_name;
fastcgi_param GEOIP_REGION $geoip_region;
fastcgi_param GEOIP_CITY $geoip_city;
fastcgi_param GEOIP_POSTAL_CODE $geoip_postal_code;
fastcgi_param GEOIP_CITY_CONTINENT_CODE $geoip_city_continent_code;
fastcgi_param GEOIP_LATITUDE $geoip_latitude;
fastcgi_param GEOIP_LONGITUDE $geoip_longitude;

для uwsgi соответственно

sudo vim /etc/nginx/uwsgi_params

### SET UWSGI Variables ###
uwsgi_param GEOIP_CITY_COUNTRY_CODE $geoip_city_country_code;

3. Качаем лайт базу (безвозмездно, значит даром)

wget -c http://www.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz

gunzip GeoLiteCity.dat.gz

куда-нибудь в /usr/local/share/GeoIP/

4. Ставим пакеты - не знаю, когда это нужно, т.к. у меня на убунте и федоре уже стояли.

sudo apt-get install geoip-bin libgeoip-dev libgeoip1

5. Перезапускам nginx

6. Теперь можно использовать переданные модулем nginx заголовки:

GEOIP_CITY
GEOIP_CITY_CONTINENT_CODE
GEOIP_CITY_COUNTRY_CODE
GEOIP_CITY_COUNTRY_CODE3
GEOIP_CITY_COUNTRY_NAME
GEOIP_LATITUDE
GEOIP_LONGITUDE
GEOIP_POSTAL_CODE
GEOIP_REGION

Вот пример данных из лайт базы для моего рабочего IP
'GEOIP_CITY': '',
'GEOIP_CITY_CONTINENT_CODE': 'EU',
'GEOIP_CITY_COUNTRY_CODE': 'RU',
'GEOIP_CITY_COUNTRY_CODE3': 'RUS',
'GEOIP_CITY_COUNTRY_NAME': 'Russian Federation',
'GEOIP_LATITUDE': '60.0000',
'GEOIP_LONGITUDE': '100.0000',
'GEOIP_POSTAL_CODE': '',
'GEOIP_REGION': ''

Не очень точно, да?
Использование платных версий Maxmind ДБ
Для загрузки баз воспользуйся логопасом, у вас ведь есть подписка MaxMind? http://www.maxmind.com/app/account. Загрузить БД можно по адресу: http://www.maxmind.com/app/download_files. Думаю, опытный пират найдет способ скачать платную версию MaxMind с rutracker.org, но я ни коим образом не поощряю подобное поведение ;).

1. GeoIP Country binary database - база данных стран

http {
    geoip_country GeoIP.dat;
    ...

Доступные параметры:

fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
fastcgi_param GEOIP_COUNTRY_CODE3 $geoip_country_code3;
fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;

2. GeoIP City binary database - база данных городов

http {
    geoip_city /usr/local/share/GeoIP/GeoIPCity.dat;
    ...

Пример ответа для того же IP
'GEOIP_CITY': 'Moscow',
'GEOIP_CITY_CONTINENT_CODE': 'EU',
'GEOIP_CITY_COUNTRY_CODE': 'RU',
'GEOIP_CITY_COUNTRY_CODE3': 'RUS',
'GEOIP_CITY_COUNTRY_NAME': 'Russian Federation',
'GEOIP_LATITUDE': '55.7522',
'GEOIP_LONGITUDE': '37.6156',
'GEOIP_POSTAL_CODE': '',
'GEOIP_REGION': '48'

No comments: