ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: поддержка HTTP/1.1 для проксирования



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




 




Copyright © Lexa Software, 1996-2009.