Mastering Nginx Timeout Settings: A Complete Guide with Practical Examples
This article explains every Nginx timeout directive, shows how to configure client, proxy, FastCGI and miscellaneous timeouts with concrete code snippets, offers best‑practice recommendations for different workloads, and provides a full configuration example to improve server stability and performance.
Introduction
Nginx is a high‑performance web and reverse‑proxy server; proper timeout settings prevent resources from being held indefinitely and improve responsiveness.
Overview of Timeout Directives
The main timeout directives are: client_header_timeout: timeout for receiving request headers client_body_timeout: timeout for receiving request bodies send_timeout: timeout for sending a response to the client proxy_connect_timeout: timeout for establishing a connection to an upstream server proxy_read_timeout: timeout for reading data from an upstream server proxy_send_timeout: timeout for sending a request to an upstream server
Client‑Side Timeouts
These control how long Nginx waits for the client to send data.
http {
client_header_timeout 30s;
client_body_timeout 30s;
send_timeout 30s;
}Proxy‑Related Timeouts
These affect communication between Nginx and upstream services.
location / {
proxy_connect_timeout 10s;
proxy_read_timeout 30s;
proxy_send_timeout 25s;
proxy_pass http://upstream_server;
}FastCGI Timeouts
When Nginx forwards requests to a FastCGI process (e.g., PHP‑FPM), the following directives are used.
location ~ \.php$ {
fastcgi_connect_timeout 15s;
fastcgi_read_timeout 30s;
fastcgi_send_timeout 30s;
fastcgi_pass 127.0.0.1:9000;
}Other Important Timeouts
keepalive_timeout: idle time before closing a client connection (default 75 s) resolver_timeout: DNS resolution timeout (default 30 s) lingering_timeout: time Nginx waits for remaining data after a client closes the connection
http {
keepalive_timeout 30s;
resolver_timeout 10s;
lingering_timeout 20s;
}Best‑Practice Recommendations
Typical production values:
Proxy timeouts: 10‑30 s
Client timeouts: 30‑60 s
keepalive_timeout: 15‑30 s
Adjust according to workload: short timeouts (5‑15 s) for API services, long timeouts (300 s+) for large file uploads.
Complete Configuration Example
http {
# Client timeouts
client_header_timeout 30s;
client_body_timeout 30s;
send_timeout 30s;
keepalive_timeout 30s;
# Proxy timeouts
proxy_connect_timeout 15s;
proxy_read_timeout 30s;
proxy_send_timeout 30s;
# FastCGI timeouts
fastcgi_connect_timeout 15s;
fastcgi_read_timeout 30s;
fastcgi_send_timeout 30s;
# Miscellaneous
resolver_timeout 10s;
lingering_timeout 20s;
server {
listen 80;
location / {
proxy_pass http://backend;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
}
}
}Conclusion
By understanding and tuning Nginx’s timeout directives—client, proxy, FastCGI, and auxiliary settings—operators can significantly enhance server stability and performance; the optimal values depend on the specific application and must be validated through testing and monitoring.
Java Architect Essentials
Committed to sharing quality articles and tutorials to help Java programmers progress from junior to mid-level to senior architect. We curate high-quality learning resources, interview questions, videos, and projects from across the internet to help you systematically improve your Java architecture skills. Follow and reply '1024' to get Java programming resources. Learn together, grow together.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
