http1.0 http1.1 keepalive

HTTP长连接详解
本文介绍了HTTP中的长连接(KeepAlive)机制,包括其优势、在HTTP1.0和HTTP1.1中的工作原理及数据交互流程。长连接能显著减少TCP连接的开销,并为交互式应用提供更好的会话支持。

1、背景
   KeepAlive是就是通常所称的长连接。KeepAlive带来的好处是可以减少tcp连接的开销,这对于短response body的请求效果更加明显。同时,可以为采用HTTP协议的交互式应用提供良好的session支持。

2、KeepAlive的原理
    在HTTP1.0和HTTP1.1协议中都有对KeepAlive的支持。其中HTTP1.0需要在request中增加”Connection: keep-alive“ header才能够支持,而HTTP1.1默认支持。

    HTTP1.0 KeepAlive支持的数据交互流程如下:
    a) Client发出request,其中该request的HTTP版本号为1.0。同时在request中包含一个header:”Connection: keep-alive“。
    b) Web Server收到request中的HTTP协议为1.0及”Connection: keep-alive“就认为是一个长连接请求,其将在response的header中也增加”Connection: keep-alive“。同时不会关闭已建立的tcp连接
    c) Client收到Web Server的response中包含”Connection: keep-alive“,就认为是一个长连接,不close tcp连接。并用该tcp连接再发送request。(跳转到a))

HTTP1.1 KeepAlive支持的数据交互流程如下:
    a) Client发出request,其中该request的HTTP版本号为1.1。
    b) Web Server收到request中的HTTP协议为1.1就认为是一个长连接请求,其将在response的header中也增加”Connection: keep-alive“。同是不会关闭已建立的tcp连接。
    c) Client收到Web Server的response中包含”Connection: keep-alive“,就认为是一个长连接,不close tcp连接。并用该tcp连接再发送request。(跳转到a))

转载:http://hi.baidu.com/marktian/blog/item/916f1a171730321ac83d6d6f.html

在 Nginx 中配置 `proxy_http_version 1.1` 是实现高效反向代理的重要手段之一。该指令用于指定 Nginx 在与后端服务器通信时所使用的 HTTP 协议版本。默认情况下,Nginx 使用 HTTP/1.0 与后端服务器通信,而 HTTP/1.1 支持持久连接(Keepalive),可以显著减少 TCP 连接的频繁建立与释放,从而降低连接丢失的风险并提升性能[^1]。 ### 作用 1. **启用持久连接** HTTP/1.1 支持持久连接(Keepalive),即单个 TCP 连接可以用于多次 HTTP 请求/响应交互。这减少了 TCP 三次握手和四次挥手的开销,提高了请求处理效率,尤其在高并发场景下效果显著。 2. **减少连接建立失败率** 通过复用已有的 TCP 连接,减少了新连接的创建频率,从而降低了因连接建立失败导致的请求失败问题。 3. **提升后端服务响应速度** 后端服务器无需频繁创建和销毁连接,可以更高效地处理业务逻辑,整体提升服务响应速度。 ### 用法 在 Nginx 的 `location` 或 `server` 块中配置 `proxy_http_version 1.1`,通常与 `proxy_set_header Connection ""` 配合使用,以确保连接复用生效: ```nginx location / { proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Connection ""; } ``` 其中,`proxy_set_header Connection ""` 的作用是清除请求头中的 `Connection` 字段,防止客户端发送 `Connection: close` 导致连接无法复用[^1]。 ### 与 upstream 的配合使用 为了进一步优化连接管理,建议在 `upstream` 块中配置 `keepalive` 参数,控制与后端服务的持久连接数量: ```nginx upstream backend { server 127.0.0.1:8080; keepalive 32; } ``` 该配置允许 Nginx 与后端服务器之间保持最多 32 个空闲连接,减少连接建立的开销。 ### 示例配置 以下是一个完整的配置示例,包含 HTTP/1.1 的使用、持久连接控制及后端连接优化: ```nginx upstream backend { server 127.0.0.1:8080; keepalive 32; } server { listen 80; location / { proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Connection ""; } } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值