This article introduces the timeout configuration of Nginx. Share with everyone, as follows:
Each request processed by Nginx has a corresponding timeout setting. If these timeouts are limited, the resources are released after the timeout is determined to be used to process other requests, so as to improve the performance of Nginx.
keepalive_timeout
HTTP is a stateless protocol. The client sends a TCP request to the server, and the server disconnects after responding.
If the client sends multiple requests to the server, each request must establish an independent connection to transmit data.
HTTP has a KeepAlive mode, which tells the webserver to keep the TCP connection open after processing a request. If it receives other requests from the client, the server will use this unclosed connection without establishing another connection.
KeepAlive remains open for a period of time, and they will occupy resources during this period. Excessive use will affect performance.
Nginx uses keepalive_timeout to specify the timeout of KeepAlive. Specify how long each TCP connection can last. The default value of Nginx is 75 seconds. Some browsers only hold 60 seconds at most, so it can be set to 60 seconds. If it is set to 0, keepalive connection is prohibited.
1 2 |
|
client_body_timeout
Specify the timeout period for sending the request body after the client establishes a connection with the server. If the client does not send any content within the specified time, Nginx returns HTTP 408 (Request Timed Out).
1 2 |
|
client_header_timeout
The timeout period for the client to send a complete request header to the server. If the client does not send a complete request header within the specified time, Nginx returns HTTP 408 (Request Timed Out).
1 2 |
|
send_timeout
The timeout period for the server to transmit data to the client.
1 2 |
|
Client connection timeout with nginx, it is recommended within 5s
Receive client header timeout, default 60s, if complete HTTP header is not received within 60s, return 408
1 2 3 4 5 6 |
|
Receive client body timeout, the default is 60s, if 1 byte from the client is not received within 60s, return 408
1 2 3 4 5 6 7 |
|
Keepalive time, 75s by default, usually keepalive_timeout should be greater than client_body_timeout
1 2 3 4 5 6 |
|
The “Keep-Alive: timeout=time” header field is recognized by Mozilla and Konqueror. MSIE closes keep-alive connections by itself in about 60 seconds.
It can be understood as the SO_LINGER delay setting when the TCP connection is closed, the default is 5s
1 2 3 4 5 6 7 |
|
Domain name resolution timeout, default 30s
1 2 3 4 5 6 |
|
Sending data to the client timeout, the default is 60s, if the client does not receive 1 byte within 60s, the connection is closed
1 2 3 4 5 6 |
|
Connection timeout between nginx and upstream server
1 2 3 4 5 |
|
Nginx receives the upstream server data timeout, the default is 60s, if 1 byte is not received within 60s, the connection is closed
1 2 3 4 5 6 |
|
Nginx sends data to the upstream server timeout, the default is 60s, if 1 byte is not sent within 60s, the connection is closed
1 2 3 4 5 6 |
|