Hello!

On Thu, Jul 21, 2016 at 07:49:28AM -0400, skeletor wrote:

> Всем привет.
> Почему вот такая конструкция не поддерживает keepalive:
> 
> location / {
> ...
> fastcgi_pass 127.0.0.1:9000;
> fastcgi_keep_conn on;
> ...
> }
> 
> а вот такая - поддерживает:
> 
> upstream fcgi_backend {
> server 127.0.0.1:9000;
> keepalive 32;
> }
> ...
> location / {
> ...
> fastcgi_pass fcgi_backend;
> fastcgi_keep_conn on;
> ...
> }
> 
> Проверял состояние соединений через netstat.

Для поддержания постоянных соединений требуется две вещи:

- Проинструктировать бекенд, чтобы по завершению запроса он 
  соединение не закрывал.  Для FastCGI это делает директива 
  fastcgi_keep_conn.

- Включить собственно кеш соединений.  Это делает директива 
  keepalive в рамках блока upstream.

При использовании адреса в директиве fastcgi_pass, как в вашем 
первом примере, создаётся неявный upstream с настройками по 
умолчанию.  Кеша соединений в нём нет, и соответственно постоянные 
соединения не используются.

-- 
Maxim Dounin
http://nginx.org/

_______________________________________________
nginx-ru mailing list
[email protected]
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Ответить