Nginx-timeout configuration

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

# 配置段: http, server, location

keepalive_timeout 60s;

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

# 配置段: 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 the specified time, Nginx returns HTTP 408 (Request Timed Out).

1

2

# 配置段: http, server, location

client_header_timeout 10s;

send_timeout

The timeout period for the server to transmit data to the client.

1

2

# 配置段: http, server, location

send_timeout 30s;

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

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.

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

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.

Keepalive time, 75s by default, usually keepalive_timeout should be greater than client_body_timeout

1

2

3

4

5

6

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 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

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 timeout, default 30s

1

2

3

4

5

6

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 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

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

1

2

3

4

5

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.

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

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.

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

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.

Guess you like

Origin blog.csdn.net/Lixuanshengchao/article/details/89929187