Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Проблема в NGINX
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
|