Nginx优化HTTPS提速

来聊聊 HTTP 协议优化 的问题。HTTP 协议优化主要分为开启 HTTP/2 和 ssl 缓存优化,下面我们单独对这两种方式详细的说明一下。

一:开启 HTTP/2

HTTP/2 标准是从 Google 的 SPDY 上进行改进的,比起 HTTP/1.1 提升了不少性能,尤其是需要并行多个请求的时候可以显著减少延迟。在现在的网络上,一个网页平均需要请求几十次,而在 HTTP 1.1 时代浏览器能做的就是多开几个 TCP 连接(通常是 6 个)进行并行 HTTP 请求,而 HTTP 2 中可以在一个 TCP 连接中进行多个 HTTP 请求。HTTP 2 原生支持多个并行请求,因此大大减少了顺序执行的请求的往返程,可以首要考虑开启。

HTTP 是基于 TCP 上的协议,每一次 HTTP 请求都需要先建立一次 TCP。到了 HTTP/2,一个 TCP 可以发送多个 HTTP 请求

1.在 Nginx 中开启 HTTP 2.0 非常简单,只需要增加一个 http2 标志即可

listen 443 ssl;
# 改为
listen 443 ssl http2;
如果你担心你的用户用的是旧的客户端,比如 Python 的 requests,暂时还不支持 HTTP 2 的话,那么其实不用担心。如果用户的客户端不支持 HTTP 2,那么连接会自动降级为 HTTP 1.1,保持了后向兼容。因此,所有使用旧 Client 的用户,仍然不受影响,而新的客户端则可以享受 HTTP/2 的新特性

2.确认你的网站或者 API 开启了 HTTP 2

在 Chrome 中打开开发者工具,点开 Protocol 之后在所有的请求中都可以看到请求用的协议了。如果 protocol 这列的值是 h2 的话,那么用的就是 HTTP 2 了

图片

二:在 Nginx 中,对于 http1.0 与 http1.1 是支持长连接的

http 请求是基于 TCP 协议之上的,那么当客户端在发起请求前,需要先与服务端建立 TCP 连接,而每一次的 TCP 连接是需要三次握手来确定的,如果客户端与服务端之间网络差一点,这三次交互消费的时间会比较多,而且三次交互也会带来网络流量。当然,当连接断开后,也会有四次的交互。在一个连接上面执行多个请求,就能节省很多时间和流量。

1.开启长连接

# 开启长连接并设置连接超时时间
keepalive_timeout 120s;

#设置一个长连接最多可以服务多少个请求,超过自动关闭
keepalive_requests 100;
2.启用 SSL Session 缓存

启用 SSL Session 缓存可以大大减少 TLS 的反复验证,减少 TLS 握手的 roundtrip。虽然 session 缓存会占用一定内存,但是用 1M 的内存就可以缓存 4000 个连接,可以说是非常非常划算的。同时,对于绝大多数网站和服务,要达到 4000 个同时连接本身就需要非常非常大的用户基数,因此可以放心开启。

Nginx 配置如下:

#设置 ssl session 缓存(10m 是指缓存大小 10 兆)
ssl_session_cache shared:SSL:50m;

#设置长连接缓存过期时间
ssl_session_timeout 4h;
3.调整 ssl_buffer_size

ssl_buffer_size 控制在发送数据时的 buffer 大小,默认设置是 16k。这个值越小,则延迟越小,而添加的报头之类会使 overhead 会变大,反之则延迟越大,overhead 越小。因此如果你的服务是 REST API 或者网站的话,将这个值调小可以减小延迟和 TTFB,但如果你的服务器是用来传输大文件的,那么可以维持 16k。如果是网站或者 REST API,建议值为 4k,但是这个值的最佳取值显然会因为数据的不同而不一样,因此请尝试 2 – 16k 间不同的值。

nginx 中配置如下:

ssl_buffer_size 6K;
这些就是 Nginx 中比较常见的 HTTP 协议相关的配置优化,Nginx 中还有一些不常见的 HTTP 协议相关配置,我这里就不一一举例说明了,有兴趣的可以前往官网查看

温馨提示:上述参数需要自己根据网站的实际情况进行调整,设置不当可能会使网站变得更慢。如果不明白其深意,最好不要开启长连接,开启 HTTP/2 即可。

© 版权声明

☆ END ☆
喜欢就点个赞吧
点赞0 分享
图片正在生成中,请稍后...