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