Категорії
Misc, staff, other WWW

[nginx] FastCGI + keepalive

Вроде бы всё просто, но есть небольшой хак: вот такая конструкция не будет поддерживать 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;
...
}

Почему так – ответ из рассылки nginx.org:

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

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

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

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

Само собой у вас в nginx.conf есть строка:

keepalive_timeout 120;

Помните:  если бекенд умеет обрабатывать только одно соединение – включать keepalive нельзя.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff