fastcgi + keepalive

Maxim Dounin mdounin на mdounin.ru
Чт Июл 21 13:14:30 UTC 2016


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