不过就像所有事物都有两面性,keep-alive 在某些场景可能也会有不足之处,例如就算是在空闲状态下它还是会消耗服务器资源,因此你可以根据自己的实际需求调整 keep-alive的超时时间,比如调整某台负载较高的nginx服务器 keep-alive 超时时间调整为 30秒。
让我们先来看下nginx返回的响应头信息
curl -IL http://zongming.net/404.html
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 19 Mar 2013 09:40:24 GMT
Content-Type: text/html; charset=utf8
Content-Length: 211
Last-Modified: Sun, 17 Feb 2013 07:44:39 GMT
Connection: keep-alive
Accept-Ranges: bytes
注意 Connection: keep-alive HTTP 头部信息。
1. 编辑 nginx.conf 配置文件
设置 keepalive_timeout 两个参数值为 30,指令详细信息后面说明。
grep 'keepalive_timeout' /etc/nginx/nginx.conf
keepalive_timeout 30 30;
2. 重启 nginx
nginx -t && nginx reload
3. 验证 keep-alive
curl -IL http://zongming.net/404.html
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 19 Mar 2013 09:42:16 GMT
Content-Type: text/html; charset=utf8
Content-Length: 211
Last-Modified: Sun, 17 Feb 2013 07:44:39 GMT
Connection: keep-alive
Keep-Alive: timeout=30
Accept-Ranges: bytes
这次 nginx返回的响应头信息稍有些不同,http响应头多了一个 Keep-Alive字段用于输出 keep-alive 超时信息。
语法: keepalive_timeout timeout [header_timeout]
默认值: keepalive_timeout 75s;
使用字段: http, server, location
参数:
参数1指定了客户端与服务器 keep-alive的超时时间,值为0将禁用 keep-alive功能。
参数2(可选)在HTTP响应头"Keep-Alive: timeout=time" 字段中设置一个值。
最后来总结下文章中的知识点