ПРОЕКТЫ 


  АРХИВ 


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: Keepalive у apache, нужен ли?



On Monday, September 22, 2008 at 12:01:44, Никита Козлов wrote:

НК> Nginx общается с backend'ом по http1.0, а в нем нет keepalive.

Keep-Alive в HTTP/1.0 есть, только по умолчанию не используется.
http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.6.2
Persistent connections in HTTP/1.0 are explicitly
negotiated as they are not the default behavior.

для получения Keep-Alive connection по протоколу HTTP/1.0
надо явно его запросить у сервера через Connection: Keep-Alive

ВВ> И я правильно понял тогда, что если между nginx и apache keepalive
ВВ> быть не может, то можно в апаче смело выключить keepalive?

да, можно смело выключать, потому что keepalive connection
между nginx и apache сейчас не поддерживается в nginx, AFAIU.

если apache настроент нормально - Keep-Alive между nginx и apache
быть не должно, даже если у apache присутствует поддержка Keep-Alive,
потому что протокол HTTP/1.0 и нет явного запроса на Keep-Alive соединение
и даже более того, nginx посылает apache заголовок Connection: close - это 
означает
отсутствие Keep-Alive даже если backend проинтерпретирует запрос nginx`а как 
HTTP/1.1

интерпретации HTTP/1.0 запроса по протоколу HTTP/1.1 быть не должно, если 
backend
не глючный, поэтому в идеале даже строка Connection: close в заголовке 
избыточна.

тем не менее, RFC явно разрешают на запрос по протоколу HTTP/1.0 давать
ответ по протоколу HTTP/1.1, потому что major номер версии не меняется,
а только minor: "the minor version labels the capability of the sender,
not the interpretation of the message". [RFC 2145]. там же далее:

 HTTP/1.0 clients cannot be expected to understand chunked encodings,
 and so an HTTP/1.1 server must never send "Transfer-Encoding: chunked"
 in response to an HTTP/1.0 request.

если apache присылает ответ в "Transfer-Encoding: chunked"
- он не соответствует стандарту, или некорректно настроен.

возможно, некоторые http-сервера включают "Transfer-Encoding: chunked"
потому что считают, что клиент понимает HTTP/1.1, поскольку они видят
в запросе заголовок Connection: close который отсутствует в HTTP/1.0,
и есть только в протоколе HTTP/1.1? (хотя этим они явно нарушают RFC)

PS может быть мне просто повезло, но Apache 2.2.x в качестве
backend`а работает с nginx без глюков в плане http протокола.

-- 
Best regards,
 Gena




 




Copyright © Lexa Software, 1996-2009.