Keepalive у apache, чи потрібен
ginx спілкується з backend'ом http1.0, а в ньому немає keepalive.
Keep-Alive в HTTP/1.0 є тільки за замовчуванням не використовується. https://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.6.2 Persistent connections в HTTP/1.0 explicitly negotiated as they are not 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: « message». [RFC 2145]. там же далі:
HTTP/1.0 клієнтів не може бути 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 протоколу.