если дергать нужный мне ресурс напрямую с back-end(JBOSS), то приходит
следующий заголовок:
Заголовок ответа:
---------------------------------------------------------------
Accept-Ranges bytes
Cache-Control no-cache
Content-Type application/x-_javascript_; charset=UTF-8
Date Thu, 22 Aug 2013 11:46:04 GMT, Thu, 22 Aug 2013 11:46:04
GMT
Server Restlet-Framework/2.0.14
Transfer-Encoding chunked
Vary Accept-Charset, Accept-Encoding, Accept-Language, Accept
---------------------------------------------------------------
Если делать запрос через front-end, то NGINX возвращает следующее:
---------------------------------------------------------------
Cache-Control no-cache
Connection close
Content-Encoding gzip
Content-Type application/x-_javascript_; charset=UTF-8
Date Thu, 22 Aug 2013 11:45:25 GMT
Server nginx
Vary Accept-Encoding, Accept-Charset, Accept-Encoding,
Accept-Language, Accept
---------------------------------------------------------------
Как видно из последнего запроса, nginx шлет ответ клиенту и не позволяет
переиспользовать имеющийся коннекшн, присылая "Connection : close". Это
касается всех ресурсов, которые запрашивает nginx c back-end.
Если ресурс на nginx не пробрасывается на прокси или данные берутся из
memcached (подключен соответсвующий модуль), то nginx исправно присылает
"Connection : keep-alive".
Как побороть данную проблему ? Как заставить nginx возвращать keep-alive
соединения клиенту при получении данных с прокси ?
Есть предположение, что он это делает, поскольку данные - динамические, и
nginx не знает размер данных, отдаваемых клиенту, и для страховки запрещает
переиспользовать соединение, по которому передаются данные неизвестного
размера. Были мысли, чтобы nginx буферизировал данные с прокси, а потом
проставлял размер ответа и возвращал keep-alive (не врядли это возможно). С
другой стороны согласно документации Http-1.1 позволяет использовать
keep-alive совместно с chunked.
Есть какие-то мысли относительно данной проблемы ?
Заранее благодарю всех, кто откликнется!