поддержка HTTP/1.1 для проксирования
RaPaMaN
rapaman at virthost.net
Thu Dec 30 00:43:33 MSK 2004
Добрый вечер, Игорь !
> Да, получил, по нему есть два замечания. Во-первых, длину нужно вычи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.
Понял, спасибо. Я дописал патч, высылаю его Вам для просмотра.
Я учел все условия и если Connection null, то я даю close в новом хедере.
А это модифицированный код для подмены Connection из хедера, работает в апаче
начиная с 2.0.51 (опция header - always):
# START OF HACK
# Set new headers from X-Client-Connection
RewriteEngine On
RewriteCond %{HTTP:X-Client-Connection} ^(.*)
RewriteRule ^.* - [env=REMOTE_X_CLIENT_CONNECTION:
%1,env=REMOTE_CLIENT_CONNECTION:%{HTTP:Connection}]
RequestHeader set Connection "%{REMOTE_X_CLIENT_CONNECTION}e"
RequestHeader unset X-Client-Connection
# Fix to old headers
Header always set Connection "%{REMOTE_CLIENT_CONNECTION}e"
env=REMOTE_CLIENT_CONNECTION
# END OF HACK
С Уважением,
Дмитрий.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: x-client-connection.patch
Type: text/x-diff
Size: 6693 bytes
Desc: not available
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20041229/c4fe5e91/attachment.patch>
More information about the nginx-ru
mailing list