This article describes Nginx timeout configuration. To share with you, as follows:
Each request handled by Nginx has a timeout setting. If you limit these timeouts, Nginx performance can be improved by determining that resources are freed up to handle additional requests.
keepalive_timeout
HTTP is a stateless protocol. The client sends a TCP request to the server, and the server disconnects after the response is complete.
If the client sends multiple requests to the server, each request establishes a separate connection to transfer data.
HTTP has a KeepAlive mode that tells webServer to keep the TCP connection open after processing a request. If another request is received from the client, the server takes advantage of the unclosed connection without establishing another connection.
Keepalives remain open for a period of time, during which time they occupy resources. Too much occupancy can affect performance.
Nginx uses keepalive_timeout to specify a KeepAlive timeout. Specifies the maximum length of time each TCP connection can be held. The default value for Nginx is 75 seconds. Some browsers only keep 60 seconds at most, so you can set it to 60 seconds. Setting it to 0 disables keepalive connections.
HTTP, server, location
keepalive_timeout 60s;
client_body_timeout
Specifies the timeout period for the client to send the Request Body after establishing a connection with the server. If the client does not send anything within a specified time, Nginx returns HTTP 408 (Request Timed Out).
HTTP, server, location
client_body_timeout 20s;
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 a specified time, Nginx returns HTTP 408 (Request Timed Out).
HTTP, server, location
client_header_timeout 10s;
send_timeout
Timeout period for data transfer from the server to the client.
#
Configuration section
:
http, server, location
send
_
timeout
30
s;
Client connection to Nginx timed out. Recommend within 5s
The default value is 60 seconds. If the complete HTTP header is not received within 60 seconds, 408 is returned
Syntax: client_header_timeout time;
Default:
client_header_timeout 60s;
Context: http, server
Defines a timeout for reading client request header. If a client does not transmit the entire header within this time,
the 408 (Request Time-out) error is returned to the client.
The body of the receiving client times out. Default: 60 seconds. If no byte is received from the client within 60 seconds, 408 is returned
Syntax: client_body_timeout time;
Default:
client_body_timeout 60s;
Context: http, server, location
Defines a timeout for reading client request body. The timeout is set only for a period between two successive read operations, not for the transmission of the whole request body.
If a client does not transmit anything within this time,
the 408 (Request Time-out) error is returned to the client.
The keepalive time is 75 seconds by default. Usually keepalive_timeout should be larger than client_body_timeout
Syntax: keepalive_timeout timeout [header_timeout];
Default:
keepalive_timeout 75s;
Context: http, server, location
The first parameter sets a timeout during which a keep-alive client connection will stay open on the server side. The zero value disables keep-alive client connections.
The optional second parameter sets a value in The "keep-alive: Timeout =time "response header field. Two parameters may differ.
The “Keep Alive: Timeout =time “header field is recognized by Mozilla and Konqueror. MSIE watches keep-alive connections by itself in about 60 seconds.
The value can be set to SO_LINGER delay when the TCP connection is closed. The default value is 5s
Syntax: lingering_timeout time;
Default:
lingering_timeout 5s;
Context: http, server, location
When lingering_close is in effect, this directive specifies the maximum waiting time for more client data to arrive. If data are not received during this time,
the connection is closed. Otherwise, the data are read and ignored, and nginx starts waiting for more data again.
The “wait-read-ignore” cycle is repeated, but no longer than specified by the lingering_time directive.
Domain name resolution times out. The default value is 30s
Syntax: resolver_timeout time;
Default:
resolver_timeout 30s;
Context: http, server, location
Sets a timeout for name resolution, for example:
resolver_timeout 5s;
Sending data to the client times out. The default value is 60 seconds. If the client does not receive a byte within 60 seconds, the connection is closed
Syntax: send_timeout time;
Default:
send_timeout 60s;
Context: http, server, location
Sets a timeout for transmitting a response to the client. The timeout is set only between two successive write operations,
not for the transmission of the whole response. If the client does not receive anything within this time, the connection is closed.
Connection timeout between nginx and upstream server
Syntax: proxy_connect_timeout time;
Default:
proxy_connect_timeout 60s;
Context: http, server, location
Defines a timeout for establishing a connection with a proxied server. It should be noted that this timeout cannot usually exceed 75 seconds.
Upstream: while receiving upstream data timed out (60 seconds), the connection is closed if no byte is received within 60 seconds
Syntax: proxy_read_timeout time;
Default:
proxy_read_timeout 60s;
Context: http, server, location
Defines a timeout for reading a response from the proxied server. The timeout is set only between two successive read operations,
not for the transmission of the whole response. If the proxied server does not transmit anything within this time, the connection is closed.
110: Connection to upstream server timed out (default: 60 seconds) : if not a byte is sent within 60 seconds, connection is closed
Syntax: proxy_send_timeout time;
Default:
proxy_send_timeout 60s;
Context: http, server, location
Sets a timeout for transmitting a request to the proxied server. The timeout is set only between two successive write operations,
not for the transmission of the whole request. If the proxied server does not receive anything within this time, the connection is closed.