Ce face keepalive_timeout
O pagină are zeci de fișiere (CSS, JavaScript, imagini). Cu conexiuni keep-alive, browserul le cere pe toate pe aceeași conexiune, fără să repete de fiecare dată conectarea TCP și negocierea TLS. keepalive_timeout spune cât așteaptă Nginx o cerere nouă înainte să închidă conexiunea.
Al doilea parametru, opțional, este trimis clientului în antetul Keep-Alive: timeout=.... keepalive_requests limitează câte cereri pot trece printr-o conexiune, iar keepalive_time cât poate trăi conexiunea în total. keepalive_timeout 0; oprește keep-alive.
Aceste directive privesc conexiunile cu clienții. Conexiunile păstrate deschise spre serverele din spate se configurează separat, cu keepalive în blocul upstream.
Parametri
| Parametru | Descriere |
|---|---|
Context |
http, server, location. |
Implicit |
keepalive_timeout 75s;, keepalive_requests 1000;, keepalive_time 1h; |
timp_antet |
Valoarea trimisă în antetul Keep-Alive: timeout=. |
Ce returnează
Nimic; afectează cât timp rămân deschise conexiunile.
Exemple
Exemplul 1: Valori uzuale pentru un site
30 de secunde ajung pentru încărcarea unei pagini și a resurselor ei, fără să țină inutil deschise mii de conexiuni.
http {
keepalive_timeout 30s;
keepalive_requests 1000;
}
Exemplul 2: Conexiuni păstrate deschise spre aplicația din spate
Pentru keepalive în upstream, proxy-ul trebuie să folosească HTTP/1.1 și să nu trimită Connection: close.
upstream aplicatie {
server 127.0.0.1:8080;
keepalive 32;
}
server {
# ...
location / {
proxy_pass http://aplicatie;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
Greșeli frecvente
- Setezi
keepalive_timeout 600s;: mii de conexiuni inactive ocupă locuri dinworker_connections. - Crezi că
keepalive_timeoutpăstrează și conexiunile spre PHP-FPM sau spre aplicație. Pentru acelea foloseștekeepaliveînupstream(șifastcgi_keep_conn on;pentru FastCGI).
Comenzi înrudite
worker_connections: Numărul maxim de conexiuni simultane pe care le poate deschide fiecare proces worker, inclusiv conexiunile spre serverele din spate.