Re: модуль nginx для работы с блокирующей операцией

Maxim Dounin mdounin at mdounin.ru
Mon Apr 21 14:19:00 UTC 2014


Hello!

On Mon, Apr 21, 2014 at 09:46:08AM -0400, saaleb wrote:

> Здравствуйте.
> 
> У меня есть необходимость в создании модуля nginx следующего плана:
> 
> 1. Получение запроса HTTP
> 2. Разбор этого запроса 
> 3. Упаковка в спец. формат
> 3. Подключение к удаленному серверу - блокирующая операция
> 4. Отправка запроса - блокирующая операция
> 5. Ожидание ответа - блокирующая операция
> 6. Распаковка
> 7. Отправка ответа.
> 
> Я сделал модуль через handler, но похоже это не самый лучший вариант -
> веб-сервер на время блокирующих операций перестает обрабатывать остальные
> соединения и принимать новые. Как я понял, в данном случае нужно
> использовать upstream-тип модуля.
> Верно ли мое предположение?
> Есть ли возможность в upstream модуле получать уже распарсенные HTTP
> значения заголовков?
> Есть ли несложные для понимания примеры таких модулей?

Примеры модулей - proxy, fastcgi, scgi, uwsgi, memcached.  
Наиболее простой из всех вышеперечисленных -  memcached, на него и 
имеет смысл смотреть в первую очередь.

Кроме того, пример реализации протокола для upstream с пояснениями 
был у Evan'а Miller'а, ссылки есть тут:

http://nginx.org/en/links.html

-- 
Maxim Dounin
http://nginx.org/



Подробная информация о списке рассылки nginx-ru