Hello! On Wed, Mar 19, 2014 at 10:42:26AM +0000, Anatoly Mikhailov wrote:
> > On 18 Mar 2014, at 15:10, Maxim Dounin <[email protected]> wrote: > > > Hello! > > > > On Tue, Mar 18, 2014 at 03:08:31PM +0000, Anatoly Mikhailov wrote: > > > >> > >> On 18 Mar 2014, at 13:51, Maxim Dounin <[email protected]> wrote: > >> > >>> Hello! > >>> > >>> On Tue, Mar 18, 2014 at 12:28:08PM +0000, Anatoly Mikhailov wrote: > >>> > >>>> > >>>> On 18 Mar 2014, at 11:08, Maxim Dounin <[email protected]> wrote: > >>>> > >>>>> Hello! > >>>>> > >>>>> On Tue, Mar 18, 2014 at 11:04:27AM +0000, Anatoly Mikhailov wrote: > >>>>> > >>>>>> Добрый день, > >>>>>> > >>>>>> По последнему blog post > >>>>>> (http://nginx.com/blog/load-balancing-with-nginx-plus-part2/) > >>>>>> возник вопрос: какой эффект производит proxy_set_header Connection “"? > >>>>>> > >>>>>> Поясню вопрос на примере, имеется следующий конфиг для проксирования > >>>>>> S3 запросов (опущены лишние детали): > >>>>>> > >>>>>> location ~* ^/i/(.*) { > >>>>>> proxy_http_version 1.1; > >>>>>> proxy_set_header Authorization ''; > >>>>>> proxy_hide_header Set-Cookie; > >>>>>> proxy_ignore_headers "Set-Cookie”; > >>>>>> ... > >>>>>> proxy_pass ...; > >>>>>> } > >>>>>> > >>>>>> В данном случае версия http для проксирования установлена в 1.1, > >>>>>> то есть ожидаем повторное использование подключения, > >>>>>> что в данном случае изменит proxy_set_header Connection “" ? > >>>>> > >>>>> По умолчанию добавляется "Connection: close"[1], и использование > >>>>> "proxy_set_header Connection ''" нужно, чтобы этого избежать. > >>>>> > >>>>> http://nginx.org/r/proxy_set_header/ru > >>>> > >>>> Максим, понятно, HTTP подключение закрывается после каждого запроса по > >>>> умолчанию, > >>>> но достаточно ли Connection “” для реиспользования HTTP 1.1 подключения? > >>>> Обязательно ли > >>>> явно добавлять блок upstream и указывать директиву keepalive? > >>> > >>> Нужно и то, и другое. Из заголовков запроса нужно убрать > >>> "Connection: close", чтобы бекенд не закрывал соединение, а сам > >>> nginx - проинструктировать соединения сохранять и использовать > >>> повторно. > >> > >> Понял, спасибо, Максим! Контекст директивы keepalive для бэкэнда только > >> upstream, > >> если смотреть документацию, но может есть какой-то элегантный способ > >> передать > >> keepalive в proxy_pass сразу, без объявления блока upstream? > > > > Нет. > > супер, переписал конфигурацию для проксирования S3 на upstream, получилось > очень классно, > вопрос - почему бы не сделать keepalive для бэкэнда по умолчанию? Использование постоянных соединений полезно в основном в тех случаях, когда до бекенда - далеко. В условиях близких бекендов оно обычно не нужно. Наоборот, в некоторых ситуациях постоянные соединения могут повредить - например, если бекенд сильно ограничен по количеству соединений, которые он может обрабатывать. В документации даже специально добавлено замечание про это, т.к. люди периодически наступают, cм. http://nginx.org/r/keepalive/ru. Так что я к идее сделать keepalive к бекендам поведением по умолчанию - отношусь скептически. -- Maxim Dounin http://nginx.org/ _______________________________________________ nginx-ru mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
