mod_geo для nginx

Igor Sysoev is at rambler-co.ru
Sun Jan 30 23:07:56 MSK 2005


On Sat, 29 Jan 2005, Михаил Монашёв wrote:

> Игорь, есть ли у тебя в планах модуль для определения географии? И как
> на  бэкенд ты планируешь передавать информацию о стране? В url-е или в
> поле  заголовка  запроса?  Хотелось  бы  и то и то :-) Формат исходных
> данных будет как у Тутубалина или как у MaxMind ?

Да, планирую, более того, он уже частично сделан.
Формат такой же, синтаксис несколько отличается. Директива такая:

     geo geo0 3 {
         include         iplist;

         10.1.1.1/32     6;
         10.1.1.0/24     5;
         192.168.0.0/16  9;
         127.0.0.0/30    7;
     }

Внутри можно делать несколько inсlude'ов и перемежать просто адресами.
Во вложенном файле адреса задаются так же, как и в основной секции:

iplist:
     10.1.1.2/32     6;
     10.1.1.5/32     6;

Директива geo определяет переменную geo0. Таких переменных может
быть несколько (имена произвольные). После имени переменных указывается
значение по умолчанию. Пока можно использовать только числа.

Переменные можно будет передать бэкенду, писать в лог и использовать
в rewrite примерно так (rewrite тоже на днях был переделан, чтобы
в него можно было добавлять всякие директивы):

    if ($geo0) {
        rewrite  -   /internal/forbidden.html  last;
    }

То есть, если geo0 не ноль, то делать rewrite. if() на первых порах
будет достаточно примитивный, но будет развиваться.

> Сейчас  раскидал  все  сайты  с  виртуальных хостов на отдельные Апачи
> спомощью nginx и заметил, что чайлды Апача, которые использует mod_geo
> жрут  памяти  намного больше чем остальные. При этом nginx рядо с ними
> вообще  несравнивается.  6  его  процессов меньше памяти занимают, чем
> один  Апач!  Вот  я  и  подумал, может можно сильно сэкономить память,
> пеместив  определение  географии в nginx. Опять же и патчи для mod_geo
> не нужны для работы на бэкенде.

Ну у Апача память в данном случае успешно шариться, но тем не менее,
сравнение с Апачём интересное. Например, я на днях на одной из машин
обнаружил, что top показывает такое:

25072 www         2 -20  3612K  3284K kqread 0  50:04  0.10%  0.10% nginx
25073 www         2 -20  3444K  3116K kqread 0  49:58  0.05%  0.05% nginx
25070 www         2 -20  2908K  2580K RUN    0  49:48  0.05%  0.05% nginx
25071 www         2 -20  3200K  2872K kqread 0  50:18  0.00%  0.00% nginx
25074 www         2 -20  2892K  2564K kqread 0  50:06  0.00%  0.00% nginx
49054 www         2   0  4216K  2552K accept 0   0:59  0.00%  0.00% httpd
48763 www         2   0  4088K  2464K accept 0   0:59  0.00%  0.00% httpd
48297 www         2   0  4144K  2508K accept 0   0:59  0.00%  0.00% httpd

Каждый процесс nginx при этом обслуживает порядка 50-70 соединений,
а Апачи - это просто mod_accel'и.


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list