Picon
Favicon
Gravatar

Re: Скромный подарок на Новый Год

At Wed, 31 Dec 2008 18:07:08 +0000 (GMT),
Valery Kholodkov wrote:
> 
> 
> Здравствуйте!
> 
> В связи с тем, что Новый Год, а так же в связи с тем, что я
сам начал 
> заглядывать в собственноручно написанную
документацию, я решил её 
> опубликовать:
> 
> http://www.grid.net.ru/nginx/nginx-modules.html
> 
> Олег Бунин очень хотел, чтобы я выступил с этим
докладом на Highload++ 
> 2008, но в то время я был сильно занят переездом из одной
страны в 
> другую и поэтому не приехал.
> 
> Кроме того, документация немного недописана,
потому что нет хорошей 
> идеи, а рутину писать лень. Буду работать над этим.
> 
> Если будут замечания, пишите.
> 

http://catap.ru/blog/tag/nginx%20programming%20guide/

Документация от меня. У вас больше, да, но что-то
(Continue reading)

Peter A Leonov | 1 Jan 14:56
Picon
Gravatar

Re: Скромный подарок на Новый Год

Хороший подарок, Валерий! Большое спасибо :)


С уважением,
Петр Леонов.

On 31.12.2008, at 21:07, Valery Kholodkov <valery+nginxru <at> grid.net.ru>  
wrote:

>
> Здравствуйте!
>
> В связи с тем, что Новый Год, а так же в связи с тем, что я
сам начал
> заглядывать в собственноручно написанную
документацию, я решил её
> опубликовать:
>
> http://www.grid.net.ru/nginx/nginx-modules.html

>
> Олег Бунин очень хотел, чтобы я выступил с этим
докладом на Highload++
> 2008, но в то время я был сильно занят переездом из одной
страны в
> другую и поэтому не приехал.
>
> Кроме того, документация немного недописана,
потому что нет хорошей
> идеи, а рутину писать лень. Буду работать над этим.
>
(Continue reading)

Arkadiy Kulev | 1 Jan 16:42

вопрос по sever_name

Здравствуйте, можно ли использовать wildcards в server_name?

К примеру, я использую хосты вида data1.****.ru, data2.****.ru, итд.
Они все заведены на один сервер, и каждый хост
подключен к своей
папке /data1, /data2, итд.

Так вот, так как таких хостов много, но структура
конфига у них
одинаковая, то мне приходится дублировать вот такие записи:

        server {
                listen ***:80;
                server_name data1 ~[0-9].data1.*$ data1.*;
                access_log   /var/log/nginx.log static;
                root /data1;
                location @fallback {
                        access_log /var/log/nginx.log new;
                        keepalive_timeout 0; # so when new images are requested, the connection is dropped to make downloads faster
                        proxy_set_header Srcuri $request_uri;
                        proxy_set_header Host $host;
                        proxy_set_header Weneed $uri;
                        proxy_pass   http://backend;
                }
                location /albums/ {
                        rewrite   ^/albums/([a-z]+)/[0]*([0-9]*)([0-9])-([0-9]*)-([0-9]+)-(.*)\.([a-z]*)$  /cache/$1_cache/$6/$5-$6.$7;
                        rewrite  
^/albums/([a-z]+)/[0-9]/[0-9]/[0-9]/[0]*([0-9]*)([0-9])/(.*)/cache/[0]*([0-9]*)-(.*)\.([a-z]*)$ /cache/$1_cache/$6/$5-$6.$7;
                        rewrite   ^/cache/([a-z]+)_cache//(.*)$ /cache/$1_cache/src/$2;
                        if ($uri !~* ^/cache ) {
(Continue reading)

Re: вопрос по sever_name

Используйте map или if и set

1 января 2009 г. 18:42 пользователь Arkadiy Kulev <eth <at> ethaniel.com> написал:
Здравствуйте, можно ли использовать wildcards в server_name?

К примеру, я использую хосты вида data1.****.ru, data2.****.ru, итд.
Они все заведены на один сервер, и каждый хост подключен к своей
папке /data1, /data2, итд.

Так вот, так как таких хостов много, но структура конфига у них
одинаковая, то мне приходится дублировать вот такие записи:

       server {
               listen ***:80;
               server_name data1 ~[0-9].data1.*$ data1.*;
               access_log   /var/log/nginx.log static;
               root /data1;
               location <at> fallback {
                       access_log /var/log/nginx.log new;
                       keepalive_timeout 0; # so when new images are requested, the connection is dropped to make downloads faster
                       proxy_set_header Srcuri $request_uri;
                       proxy_set_header Host $host;
                       proxy_set_header Weneed $uri;
                       proxy_pass   http://backend;
               }
               location /albums/ {
                       rewrite   ^/albums/([a-z]+)/[0]*([0-9]*)([0-9])-([0-9]*)-([0-9]+)-(.*)\.([a-z]*)$  /cache/$1_cache/$6/$5-$6.$7;
                       rewrite   ^/albums/([a-z]+)/[0-9]/[0-9]/[0-9]/[0]*([0-9]*)([0-9])/(.*)/cache/[0]*([0-9]*)-(.*)\.([a-z]*)$ /cache/$1_cache/$6/$5-$6.$7;
                       rewrite   ^/cache/([a-z]+)_cache//(.*)$ /cache/$1_cache/src/$2;
                       if ($uri !~* ^/cache ) {
                               return   403;
                       }
                       error_page       404  =   <at> fallback;
               }
               location /albums_allow/ {
                       rewrite   ^/albums_allow/([a-z]+)/([0-9]?)([0-9]?).([a-z]*)$ /albums_allow/$1/0/$2$3.$4 break;
                       rewrite   ^/albums_allow/([a-z]+)/([0-9]*)([0-9])([0-9])([0-9]).([a-z]*)$ /albums_allow/$1/$3/$2$3$4$5.$6;
               }

       }


Можно ли сделать так, чтобы использовался маска в server_name, например
server_name data([0-9]+).*;
которую потом можно было бы подставлять в root
root /data$1;

И таким образом все эти хосты бы умещались в одной записи?

Arkadiy Kulev                         mailto:eth <at> ethaniel.com
+7 495 5070602
Moscow, Russia





--
С уважением, Борис Долгов.
icq 77556665
e-mail boris <at> dolgov.name
Alex Vorona | 1 Jan 17:42
Gravatar

Re: вопрос по sever_name

01.01.2009 17:42, Arkadiy Kulev wrote:

> Можно ли сделать так, чтобы использовался маска в
server_name, например
> server_name data([0-9]+).*;
> которую потом можно было бы подставлять в root
> root /data$1;
> 
> И таким образом все эти хосты бы умещались в одной записи?
можно использовать например map
http://sysoev.ru/nginx/docs/http/ngx_http_map_module.html и на 
основании server_name получать root
или что-то вроде
set $newroot "";
if($host  ~* "^(data[0-9]+)\..+"){
    set $newroot $1;
}
root /$newroot;

Arkadiy Kulev | 1 Jan 17:54

Re[2]: вопрос по sever_name

Решил вот таким способом, дешево и сердито.

        server {
                listen ****:80 default backlog=10000 sndbuf=128k;
                server_name ~\d.data\d+\.*$ data\d+.*;
                access_log   /var/log/nginx.log static;

                location /albums/ {
                        rewrite   ^/albums/([a-z]+)/[0]*([0-9]*)([0-9])-([0-9]*)-([0-9]+)-(.*)\.([a-z]*)$  /cache/$1_cache/$6/$5-$6.$7;
                        rewrite  
^/albums/([a-z]+)/[0-9]/[0-9]/[0-9]/[0]*([0-9]*)([0-9])/(.*)/cache/[0]*([0-9]*)-(.*)\.([a-z]*)$ /cache/$1_cache/$6/$5-$6.$7;
                        rewrite   ^/cache/([a-z]+)_cache//(.*)$ /cache/$1_cache/src/$2;
                        if ($uri !~* ^/cache ) {
                                return   403;
                        }

                }
                location /albums_allow/ {
                        rewrite   ^/albums_allow/([a-z]+)/([0-9]?)([0-9]?).([a-z]*)$ /albums_allow/$1/0/$2$3.$4 break;
                        rewrite   ^/albums_allow/([a-z]+)/([0-9]*)([0-9])([0-9])([0-9]).([a-z]*)$ /albums_allow/$1/$3/$2$3$4$5.$6;
                }

                location @fallback {
                        access_log /var/log/nginx.log new;
                        keepalive_timeout 0; # so when new images are requested, the connection is dropped to make downloads faster
                        proxy_set_header Srcuri $request_uri;
                        proxy_set_header Host $host;
                        proxy_set_header Weneed $uri;
                        proxy_pass   http://backend;
                        break;
                }

                location / {
                        if ($http_host ~ data(\d+)\.) {
                                set $root /data$1;
                                root  $root;
                                error_page       404  =  @fallback;
                        }
                }

        }

Thursday, January 1, 2009, 7:42:26 PM, you wrote:

> 01.01.2009 17:42, Arkadiy Kulev wrote:

>> Можно ли сделать так, чтобы использовался маска в
server_name, например
>> server_name data([0-9]+).*;
>> которую потом можно было бы подставлять в root
>> root /data$1;
>> 
>> И таким образом все эти хосты бы умещались в одной записи?
> можно использовать например map
> http://sysoev.ru/nginx/docs/http/ngx_http_map_module.html и на 
> основании server_name получать root
> или что-то вроде
> set $newroot "";
> if($host  ~* "^(data[0-9]+)\..+"){
>     set $newroot $1;
> }
> root /$newroot;

Arkadiy Kulev                         mailto:eth@...
+7 495 5070602
Moscow, Russia

Sergey Shepelev | 2 Jan 15:37
Picon
Gravatar

Re: платформа для REST сервисов

Сообщения отдельно, таймауты отдельно.

У меня есть некий асинхронный движок. Допустим я по
какому-то внешнему
событию (например запуск) хочу подконектиться к
другому серверу и
послать ему строчку.
Для этого я говорю своему асинхронному движку:
конектись(адрес, порт,
за 10 секунд).
В это время движок делает соответствующий системный
вызов... и таки
да, никаких таймаутов. Но он либо
  а) устанавливает еще один колбек от системы - на время 10
секунд и
ждет какое событие наступит раньше (реализация таймаута)
  б) либо периодически очень-очень часто теребит ОС,
мол, а не
наступило ли там событие. И в процессе этого
теребления инкрементит
прошедшее время. И опять-таки получается реализация таймаута.

Конечно может быть есть еще куча гораздо более лучших
способов. Я
просто хотел сказать, что если в сисколе select/epoll/etc нет понятия
таймаута - это не значит, что асихнронные приложения
их не ждут.
Асинхронщина без реализации таймаутов (в любом виде,
мне правда пофигу
на каком уровне и как именно) - бесполезна.

2008/12/31  <postmaster <at> softsearch.ru>:
> Здравствуйте, Sergey.
>
> Вы не совсем правильно представляете работу
асинхронных приложений.
> Они не ждут таймаут, они получают сообщения от ОС и по
ним что-то делают.
>
>> Почитал тред про CGI в nginx, утром обсуждали смежную
задачку с колегом.
>> Только у меня идея была написать всю асинхронщину на
питоне, а в
>> реальной жизни мы используем nginx + fastcgi на питоне.
>
>> И в общем идея примерно такая.
>> Есть некий слой "А" асинхронной обработки запросов
снаружи (повторюсь,
>> сейчас его роль офигительно выполняет nginx).
>> "А" знает, что в его распоряжении имеется, скажем 100
бекендов - 100
>> процессов. Думаю, оптимальное количество можно
определить для
>> конкретной материнки и проца. (RFC)
>> Приходит внешний запрос от клиента. "А" здесь быстро
принимает запрос
>> и ищет свободный воркер
>> если есть свободный воркер, (RFC)
>>    помечает его как занятый
>>    асинхронно шлёт запрос ему,
>> (и продолжает работать дальше)
>> если нет свободного воркера
>>     ждем таймаут, если в течение таймаута свободного
воркера не
>> появилось - возвращаем клиенту "таймаут" (RFC,
кажется, nginx именно
>> так и умеет)
>> когда воркер вернул результат
>>     отдаём клиенту,
>>     помечаем воркер как свободный.
>
>> К этому счастью нужно прикрутить админку бекендов с
графиками и
>> полуавтоматическим контроллером пула воркеров,
то есть чтоб некий
>> третий процесс контроллировал сколько нужно
прибить лишних воркеров,
>> сколько нужно открыть новых (RFC).
>
>> Получится наверно что-то вроде веб-части Google AppEngine.
>
>
>
>
> --
> С уважением,
>  postmaster                          mailto:postmaster <at> softsearch.ru
>
>
>
Valery Kholodkov | 3 Jan 19:39
Picon
Favicon

Re: Скромный подарок на Новый Год


Я могу забрать к себе пост про списки в качестве главы
2.3. Пост про блоки конфигурации интересен, но нужно
переписать: в том виде, в котором он сейчас
существует, его практическая польза меньше, чем
хотелось бы. В свою очередь обещаю открыть секцию
"Благодарности". 

----- Original Message -----
From: "Kirill A. Korinskiy" <catap <at> catap.ru>
To: nginx-ru <at> sysoev.ru
Sent: Thursday, January 1, 2009 5:25:54 AM GMT +01:00 Amsterdam / Berlin / Bern / Rome / Stockholm / Vienna
Subject: Re: Скромный подарок на Новый Год

At Wed, 31 Dec 2008 18:07:08 +0000 (GMT),
Valery Kholodkov wrote:
> 
> 
> Здравствуйте!
> 
> В связи с тем, что Новый Год, а так же в связи с тем, что я
сам начал 
> заглядывать в собственноручно написанную
документацию, я решил её 
> опубликовать:
> 
> http://www.grid.net.ru/nginx/nginx-modules.html
> 
> Олег Бунин очень хотел, чтобы я выступил с этим
докладом на Highload++ 
> 2008, но в то время я был сильно занят переездом из одной
страны в 
> другую и поэтому не приехал.
> 
> Кроме того, документация немного недописана,
потому что нет хорошей 
> идеи, а рутину писать лень. Буду работать над этим.
> 
> Если будут замечания, пишите.
> 

http://catap.ru/blog/tag/nginx%20programming%20guide/

Документация от меня. У вас больше, да, но что-то
описано только у
меня.

Может соберем все в wiki или еще куда-то?

> -- 
> Regards,
> Valery Kholodkov
> 

--

-- 
Regards,
Valery Kholodkov
Picon
Favicon
Gravatar

HAProxy vs Nginx

Здравствуйте

Наткнулся на сравнение HAProxy и Nginx:
http://affectioncode.wordpress.com/2008/06/28/another-comparison-of-haproxy-and-nginx/
http://affectioncode.wordpress.com/2008/06/11/comparing-nginx-and-haproxy-for-web-applications/

и на http://blog.kovyrin.net/2006/08/25/haproxy-load-balancer/

Кто-то ещё сравнивал HAProxy с Nginx? И если HAProxy быстрее Nginx, то
почему, и что можно доработать в Nginx-е, чтобы он стал быстрее?

--

-- 
С уважением,
 Михаил

Picon
Favicon
Gravatar

Re: Скромный подарок на Новый Год

At Sat, 3 Jan 2009 18:39:17 +0000 (GMT),
Valery Kholodkov wrote:
> 
> 
> Я могу забрать к себе пост про списки в качестве главы
2.3. Пост про блоки конфигурации интересен, но нужно
переписать: в том виде, в котором он сейчас
существует, его практическая польза меньше, чем
хотелось бы. В свою очередь обещаю открыть секцию
"Благодарности". 
> 

Если будете забирать, дайте ссылку. Я надеюсь скоро
закончить описание
еще хешей.

Про конфигурацию с радостью выслушаю критику. Но
давай те приватно? :)


Gmane