事务连接中断_HTTP长连接和短连接
短连接
客户端和服务器每进行一次HTTP事务操作,就建立一次连接,任务结束就中断连接。http1.0协议默认使用短连接
长连接
客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会复用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,在服务器(如nginx中的keeepalived_timeout)均可设置。http1.0协议默认使用长连接。
Connection头部
Connection:Keep-Alive
使用长连接,http1.1默认值
Connection:Close
使用短连接,http1.0默认值
Connection:其他头部
不向代理服务器转发Connection列出的头部
旧版本代理服务器不支持长连接问题
客户端发起长连接,代理服务器陈旧,不支持处理Connection头部,Connection:Keep-Alive转发给上游服务器,上游服务器处理了请求后,复用了与代理服务器的长连接,而代理服务器也无法处理响应中的Connection头部,将Connection:Keep-Alive转发给客户端,导致客户端也复用长连接继续发送请求,最终代理服务器出错,因为短连接不能发起两次请求。
Proxy-Connection头部
用于实现所有新旧版本代理服务器对长连接的支持
旧版本代理服务器:
无法识别Proxy-Connection头部,直接转发该头部,自身与客户端的连接退化为短连接
新版本代理服务器:
识别Proxy-Connection头部,与客户端建立长连接,与服务器使用Connection替代Proxy-Connection头部。