proxy_socket_keepalive on;

Maxim Dounin mdounin на mdounin.ru
Пн Дек 10 13:36:45 UTC 2018


Hello!

On Mon, Dec 10, 2018 at 06:53:32AM -0500, suffix wrote:

> В версии 1.15.6 появилась эта опция.
> 
> Вставляю в location - не работает.
> 
> Подозреваю что по аналогии с fastcgi_pass нужно вместо:
> 
> location @fallback {
> proxy_pass http://127.0.0.1:8080;
> proxy_socket_keepalive on;
> }
> Нужно так сделать:
> 
> upstream proxy_backend {
> server 127.0.0.1:8080;
> keepalive 32;
> }
> 
> location / {
> proxy_pass proxy_backend;
> proxy_socket_keepalive on;
> }
> 
> Правильно я понимаю ?

Судя по всему, вы неправильно понимаете, зачем нужна эта опция.  
Эта опция - чтобы выставить SO_KEEPALIVE на сокете соединения с 
бэкендом, аналогично параметру "so_keepalive" для listen-сокетов.

Это нужно, чтобы даже по неактивному соединению периодически ходили 
пакеты, и соответственно а) если та сторона не отвечает - то nginx об 
этом узнал по возможности раньше, и б) если между nginx'ом и 
бэкендом стоит statefull firewall, то он видел, что соединение - 
активно, и соответствующий ему state не надо выкидывать.

Если вы хотите просто хотите использовать постоянные соединения с 
бэкендами - вам эта опция не нужна, а нужно настроить keepalive в 
соответствии с инструкциями тут:

http://nginx.org/r/keepalive

Процедура не менялась с момента появления соответствующей фичи в 
nginx 1.1.4.

-- 
Maxim Dounin
http://mdounin.ru/


Подробная информация о списке рассылки nginx-ru