FastNetMon

Thursday, 24 June 2010

Активация модуля geo в Nginx 0.7.65

Будем подключать вот это:
http://wiki.nginx.org/NginxHttpGeoModule

Почему именно geo, а не geoip? Вот результаты тестов, проведенных нашими сотрудниками:

С геоип:
средняя для -n1 (10 измерений, каждый запрос с нового адреса): 5.20
средняя для -n10000 -c1: 6.63
Средняя для -n10000 -c10: 55.06
потребление памяти: каждый воркер имеет свою базу geoip (страны - 500 Кб, города - 20 Мб)

C гео:
средняя для -n1 (10 измерений, каждый запрос с нового адреса): 6.61
средняя для -n10000 -c1: 6.73
Средняя для -n10000 -c10: 58.01
потребление памяти: каждый воркер имеет свою базу geoip (только страны - 4 Мб)

Без геоип:
средняя для -n1 (10 измерений, каждый запрос с нового адреса): 6.70
Средняя для -n10000 -c1: 6.76
Средняя для -n10000 -c10: 57.91


Скачиваем файлы с IP адресами:

cd /usr/src
wget http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
unzip GeoIPCountryCSV.zip


Теперь, даже если у Вас nginx стоит из пакетов стягиваем дистрибутив nginx треубуемой версии:

cd /usr/src
wget http://sysoev.ru/nginx/nginx-0.7.65.tar.gz
tar -xf nginx-0.7.65.tar.gz


Конвертируем geoip файл в формат nginx и переносим в папку nginx:

perl nginx-0.7.65/contrib/geo2nginx.pl < GeoIPCountryWhois.csv > geo.conf
mv geo.conf /etc/nginx/



Подключаем к nginx:
vi /etc/nginx/nginx.conf


Также вниз блока http добавляем следующее:

geo $country {
default no;
include /etc/nginx/geo.conf;
}


Далее изменяем формат логов, чтобы туда также попадала страна клиента:

log_format vhost_ip_full_format '$remote_addr - $remote_user [$time_local] $host $server_addr $request '
'$status $body_bytes_sent "$http_referer"'
'"$http_user_agent" "$http_x_forwarded_for" $request_time-$upstream_response_time "$country"';
access_log /var/log/nginx/access.log vhost_ip_full_format;


Перезапускаем Nginx:
/etc/init.d/nginx reload

No comments :

Post a Comment

Note: only a member of this blog may post a comment.