Re: Закрытие соединения: nginx возвращает в заголовке "Connection : close"
Viacheslav Biriukov
v.v.biriukov at gmail.com
Thu Aug 22 12:10:45 UTC 2013
Привет,
Покажите заголовки запросов.
Спасибо.
22 августа 2013 г., 16:06 пользователь aler <nginx-forum at nginx.us> написал:
> Всем, привет !
> Я уже поднимал данную проблему, но решил создать еще один топик с полной
> информацией.
> Итак, NGINX:
>
> nginx version: nginx/1.4.1
> built by gcc 4.1.2 20080704 (Red Hat 4.1.2-54)
> TLS SNI support disabled
> configure arguments: --user=nginx --group=nginx --prefix=/usr/share/nginx
> --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf
> --error-log-path=/var/log/nginx/error.log
> --http-log-path=/var/log/nginx/access.log
> --http-client-body-temp-path=/var/lib/nginx/tmp/client_body
> --http-proxy-temp-path=/var/lib/nginx/tmp/proxy
> --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi
> --pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx
> --with-http_secure_link_module --with-http_random_index_module
> --with-http_ssl_module --with-http_realip_module
> --with-http_addition_module
> --with-http_sub_module --with-http_dav_module --with-http_flv_module
> --with-http_gzip_static_module --with-http_stub_status_module
> --with-http_perl_module --with-http_xslt_module --with-debug --with-mail
> --with-mail_ssl_module --with-cc-opt='-O2 -g -m64 -mtune=generic'
> --with-ipv6
> --add-module=/usr/src/redhat/BUILD/nginx-1.4.1/nginx-upstream-fair
> --add-module=/usr/src/redhat/BUILD/nginx-1.4.1/nginx-upload-progress-module
> --add-module=/usr/src/redhat/BUILD/nginx-1.4.1/mod_zip
> --add-module=/usr/src/redhat/BUILD/nginx-1.4.1/nginx_mod_h264_streaming
> --add-module=/usr/src/redhat/BUILD/nginx-1.4.1/nginx-push-stream-module
> --add-module=/usr/src/redhat/BUILD/nginx-1.4.1/nginx_upstream_hash
> --add-module=/usr/src/redhat/BUILD/nginx-1.4.1/nginx-memcached-hash-pass
> --add-module=/usr/src/redhat/BUILD/nginx-1.4.1/echo-nginx-module
>
> --add-module=/usr/src/redhat/BUILD/nginx-1.4.1/ngx_http_gunzip_filter_module
> --add-module=/usr/src/redhat/BUILD/nginx-1.4.1/headers-more-nginx-module
>
>
> Есть back-end (JBOSS) и front-end (NGINX). На nginx настроено проксирование
> и включен keep-alive:
>
> http{
> ...
> keepalive_timeout 45 45;
> keepalive_requests 1000;
> ...
> }
>
> ...
>
> server{
> ...
> location /our-portal/ {
> proxy_pass http://127.0.0.1:8080;
> break;
> error_page 404 = @404;
> error_page 502 = @502;
> error_page 504 = @504;
> }
> ...
> }
>
> если дергать нужный мне ресурс напрямую с 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.
>
> Есть какие-то мысли относительно данной проблемы ?
> Заранее благодарю всех, кто откликнется!
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,242120,242120#msg-242120
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
--
Viacheslav Biriukov
BR
http://biriukov.me
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20130822/ef5e058a/attachment.html>
Подробная информация о списке рассылки nginx-ru