Проблема в NGINX

Maxim Dounin mdounin at mdounin.ru
Sat Nov 1 00:07:47 MSK 2008


Hello!

On Fri, Oct 31, 2008 at 10:44:58PM +0300, Андрей Погорельцев wrote:

> >
> > Перечитайте RFC 1945 повнимательнее, может быть наступит
> > просветление.
> >
> > Подсказка: то, что HTTP/1.0 не определяет семантику заголовка
> > Host - не означает, что его нельзя использовать.
> >
> > Maxim Dounin
> >
> > p.s. Я ни коим образом не утверждаю, что для запросов к бекендам
> > не надо уметь использовать HTTP/1.1. Однако это не является
> > простой задачей, и на текущий момент ситуация такова, что для
> > запросов используется HTTP/1.0. И в проблеме виноват бекенд,
> > вернувший некорректный ответ.
> >
> 
> Если в RFC по HTTP/1.0 не описаны chunked ответы и хидер, то я тоже могу их
> использовать? Не понимаю вашей логики.

Прочитайте внимательно стандарт[ы], там всё написано.  Клиенту никто 
не мешает прислать заголовок Host, это не является нарушением 
стандарта HTTP/1.0.  А вот если сервер вернёт клиенту, пришедшему 
по протоколу HTTP/1.0, chunked ответ - сервер перестанет быть 
совместимым со стандартом HTTP/1.1.

> Еще раз повторю: Win HTTP Server API не позволяет отдавать в
> HTTP/1.0,получается, что отвечая на 1.0 ответом 1.1 я уже нарушаю RFC?!

Вообще говоря, да - но как тут уже было указано, номер версии в заголовке 
ответа мало что значит.  А вот отправка chunked в ответ на запрос от 
HTTP/1.0 клиента - в явном виде запрещена в HTTP/1.1.  Именно 
потому и запрещена - HTTP/1.0 клиенты не обязаны понимать chunked, 
и nginx именно потому и использует HTTP/1.0, что chunked не 
понимает.

> А если извне прийдут другие заголовки HTTP/1.1, то в бэкэнд прийдет 1.0?

В бекенд nginx *всегда* отправляет запросы по HTTP/1.0.

> По сути, это урезание протокола как такового!

Возмутительно!

> Я конечно могу отвечать не chunked на 1.0, но это КОСТЫЛЬ и не 
> больше,причем на больную ногу NGINX'а!

Это ошибка в вашем приложении.  Оно не соответствует стандарту 
HTTP/1.1, т.к. отвечает на запрос HTTP/1.0 с использованием 
Transfer-Encoding: chunked.

Maxim Dounin





More information about the nginx-ru mailing list