Nginx--keepalive 的配置

2019-10-16  本文已影响0人  Joah_l

nginx 作为反向代理服务器中的 keepalive

  1. nginx 中, 对于 http1.0 和 http1.1 是支持长连接的, http 请求是基于 tcp 协议之上的, 那么当客户端发起请求前, 需要先与服务器建立 tcp 连接, 而每次的 tcp 连接是需要三次握手来确定的, 如果客户端与服务端之间的网络差了一点, 那么这三次握手的时间消耗就比较多, 同时也会带来不必要的流量消耗,当然断开连接还要有四次的挥手端开的交互;
  1. 在 HTTP 协议中, 请求是请求与应答的模式, 如果我们可以在一个连接上; 响应多个请求, 那么这个就是所谓的长连接;
  1. 我们来看看 HTTP协议在响应的主体 body 的长度的描述
  1. 当服务器传输完 body 之后, 会考虑使用长连接, 能否使用长连接, 也有条件限制, 如果客户端的请求头中的 connection 为 close; 则标识客户端需要关闭长连接, 如果为 keep-alive; 则客户端需要打开长连接, 如果请求头中没有这个字段, 根据协议: 1.0 默认为 close; 1.1 默认为 keep-alive; 那么nginx 在传输完响应体后, 会设置当前连接的 keepalive 属性, 然后等待客户端下一次请求, 当然 nginx 不可能会一直的等待, 当 nginx 设置 keepalive 等待下一次的请求时, 会设置一个最大的等待时间, 通过 keepalive_timeout 来配置, 如果配置为 0 ; 则表示关闭 keepalive; 此时 http 版本不管是 1.0, 还是 1.1; 客户端的 connection 不管是 close 还是 keepalive; 都会强制设置为 close
  1. 如果 connection 为 close; 那么在 nginx 响应完数据后, 会主动关闭连接, 那么对请求比较大的 nginx 来说, 关掉 keepalive 最后会产生比较多的 time-wait 状态的 socket; 一般来说, 当客户端的一次访问, 需要多次访问同一个 server 时, 打开 keepalive 的优势非常大,

nginx 使用反向代理时; 保持长连接

上一篇 下一篇

猜你喜欢

热点阅读