поддержка HTTP/1.1 для проксирования
Igor Sysoev
is at rambler-co.ru
Wed Dec 29 13:26:07 MSK 2004
On Tue, 28 Dec 2004, RaPaMaN wrote:
> On Tuesday 28 December 2004 16:17, Igor Sysoev wrote:
> > On Mon, 27 Dec 2004, RaPaMaN wrote:
> > > А я могу изменять исходники nginx ?
> >
> > Конечно, это разрешается в лизенции, однако, я не обещаю включить любой
> > патч в дистрибутив. В данном случае я могу только обощать не сильно менять
> > области, близкие к патчу, так, чтобы он накладывался без проблем на новые
> > версии.
>
> Спасибо, но изменение - это ваше право :) На то они и патчи, чтобы их
> делать :) Вы получали на i_g_or [at] s y so e v . ru патч мой ?
Да, получил, по нему есть два замечания. Во-первых, длину нужно вычиcлять так:
len += sizeof(x_client_connection_status_header) - 1
+ r->headers_in.connection->value.len;
А второе замечание связано как раз с падением.
> У меня вопрос, я обнаружил, что если включен параметр, который я добавил и
> приходит запрос по HTTP 1.0, то nginx валится:
> Т.е. падает с ошибкой 17, как я понял - это хедеры неправильные.
> Как я понимаю, в моем случае не приходит хедер Connection от клиента и
> r->headers_in.connection->value.data - пустое значение и соответственно
> валится прокси модуль.
> Еще вопрос, r->headers_in.connection->value.data - всегда может иметь только
> значения keep-alive или close, или может быть пустым или значение keep-alive
> только если соединение с keep-alive, а иначе - пустое (т.е. close) ?
Если заголовка "Connection" нет, то r->headers_in.connection равен NULL.
Это тоже нужно проверять, кроме p->lcf->set_x_client_connection_status.
Что передавать в "X-Client-Connection" в этом случае - не знаю.
Варианты такие:
1) для HTTP/1.1 (r->http_version == NGX_HTTP_VERSION_11)
по умолчанию keep-alive.
1) для HTTP/1.0 и ниже (r->http_version <= NGX_HTTP_VERSION_10)
по умолчанию close.
> Вот следующая строка появлется регулярно при всех запросах:
>
> 2004/12/27 20:09:05 [debug] 8507#0: *1 readv() not ready (11: Resource
> temporarily unavailable)
>
> Это нормально ?
Для epoll - да. Так же как и для rtsig.
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list