配置Nginx的超时时间,提高服务器的性能,降低客户端的等待时间。同时,在受到DOS攻击时,可以起到缓解作用。特殊情况下,请根据具体性能需求进行调优。
连接超时的作用
- 将无用的连接设置为尽快超时,可以保护服务器的系统资源(CPU、内存、磁盘)
- 当连接很多时,及时断掉那些建立好的但又长时间不做事的连接,以减少其占用的服务器资源
- 如果黑客攻击,会不断地和服务器建立连接,因此设置连接超时以防止大量消耗服务器的资源
- 如果用户请求了动态服务,则 Nginx 就会建立连接,请求 FastCGI 服务以及后端 MySQL 服务,设置连接超时,使得在用户容忍的时间内返回数据
在配置文件nginx.conf中的http段配置超时
http {
#读取http头部的超时时间,单位秒,连接建立后,服务端接收http头部,规定时间内没收到,则超时,返回给客服端408(request time out)
client_header_timeout 10;
#读取http body的超时时间,单位秒,客户端请求主体读取超时时间,如果在这个时间后客户端还没有发送任何数据, Nginx返回“Request time out(408)”错误,默认值是60。
client_body_timeout 10;
#指定响应客户端的超时时间,这个超时仅限于两个阅读活动之间的时间,如果这 个时间后客户端没有任何活动,Nginx将会关闭连接。
send_timeout 30;
#第一个参数指定客户端连接保持活动的超时时间,在这个时间之后,服务器会关掉连接,第二个参数是可选的,它指定了消息头保持活动的有效时间,它可以告诉某些浏览器关闭连接,因此服务器就不必关闭连接了,如果没有这个参数,Nginx 不会发送Keep-Alive头。第一个参数默认是75。
keepalive_timeout 5 30;
#域名解析超时时间,单位秒
#resolve_timeout 10;
#nginx服务器与被代理服务连接超时时间,代理超时
proxy_connect_timeout 60;
#nginx服务器发送数据给被代理服务器超时时间,单位秒,规定时间内nginx服务器没发送数据,则超时
proxy_send_timeout 600;
#nginx服务器接收被代理服务器数据超时时间,单位秒,规定时间内nginx服务器没收到数据,则超时
proxy_read_timeout 600;
}
设置适当的超时时间
设置ssl timeout的原因是避免攻击者建立大量无效链接,或者慢速攻击。
server {
…
ssl_session_timeout 5m; 超时时间5分钟
…
}