ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: mod_geo для nginx



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




 




Copyright © Lexa Software, 1996-2009.