背景:开发今天问我如果要缩短和后端服务器的保活时间,是否要缩短keepalive_timeout的时间,答案是否定的。所以突然就想整理一些关于超时字段的配置信息;
那么下面我总结下经常用的,在nginx配置中设置的超时字段;

1 keepalive_timeout
默认值 75s
指定了nginx与client的keep-alive连接超时时间,服务器将会在这个时间后关闭连接。
后面还有个可选项,表示使用Keep-Alive消息头保持活动的有效时间,若超过此时间,使用Keep-Alive消息头保持与客户端某些浏览器会主动与服务器断开连接。

2 send_timeout指令
此指令设置nginx服务器响应客户端的超时时间,当客户端和nginx建立连接后,如果这个时间后客户端没有任何活动,nginx服务器将会关闭连接。

3 client_header_buffer_size指令
该指令设置nginx服务器允许的客户端请求头部的缓冲区大小,默认为1KB,此值可以根据系统分页来设置
getconf PAGESIZE命令可以得出值为4K; nginx日志中400的报错就是这个缓冲区太小引起的。

4 multi_accept
该指令用于配置nginx服务器是否尽可能多地接收客户端的网络连接请求,默认为off

5 proxy_connect_timeout
默认值 60s
指定nginx与后端server的连接超时时间,这个超时时间不能超过75s

6 proxy_read_timeout
默认值 60s
决定了nginx会等待多久来获得请求的相应, 并非获取整个response的时间

7 proxy_send_timeout
默认值 60s
指定了发送请求给upstream服务器的超时时间。如果超时后,upstream没有收到新的数据,nginx会关闭连接

8 proxy_upstream_fail_timeout
默认值 10s
设置了某一个upstream后端失败了指定次数(max_fails)后,该后端不可操作的时间,默认是10s

9 net.core.netdev_max_backlog参数
表示当每个网络接口接受数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包的最大数目,一般默认值是128,nginx服务器中定义的NGX_LISTEN_BACKLOG默认是511。

10 net.core.somaxconn参数
该参数用于调节系统同时发起的TCP连接数,一般默认值为128,在客户端存在高并发请求的情况下,默认值偏小,可能导致链接超时或者重传