Re: Upstream force to close+client keep alive (API Си)

Maxim Dounin mdounin на mdounin.ru
Пт Сен 30 14:38:44 UTC 2016


Hello!

On Fri, Sep 30, 2016 at 02:53:41AM -0400, rba wrote:

> В memcached_module более менее что подвернулось глазу u->length=0 и
> u->keepalive=0 - у меня эффекта нет.

Флаг u->keepalive - это про keepalive с бекендами.  В отсутствие 
директивы keepalive в блоке upstream - эффекта и не должно быть, 
т.к. по умолчанию соединение с бекендом после каждого запроса 
закрывается.

Поле u->length - указывает, сколько ещё байт ожидается от клиента 
в соединении.  Если после вызова фильтра u->length равен 0 - 
значит, ответ закончился.  Соответственно соединение будет 
закрыто.

Нюанс: u->length используется для небуферизированного режима 
работы, для буферизированного - фильтры другие, и используется 
u->pipe->length.  Наиболее простой пример модуля, умеющего 
работать в обоих режимах - scgi, 
src/http/modules/ngx_http_scgi_module.c.

> Мне нужно закрыть апстрим из rev/wev handlers принудительно, чтобы сессия с
> пользователем осталась открыта.

Не нужно ничего специально закрывать.  Соединение с бекендом nginx 
закроет сам, когда ответ закончится.

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



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