米饭粑 米饭粑
  • 首页
  • 好物推荐
    • 干货分享
    • 好物推荐
    • 免费资源
    • 非专业测评
  • 技术架构
    • Linux
    • HTTPS
    • Windows Server
  • 关于米饭
  • 教程&更多
    • 更多教程
    • 资讯新闻
    • 琐琐碎碎
    • 打赏米饭
    • 阿里云Ping
  • 友情链接
首页 › 技术架构 › HTTPS › 使用 LiteSpeed 轻松为网站开启 HTTP/3 实践

使用 LiteSpeed 轻松为网站开启 HTTP/3 实践

妙正灰
3年前HTTPS阅读 2,649

前言

HTTP/3 即 QUIC(发音同Quick),通过发音我们就知道 HTTP/3 又可以让网站的速度更上一层楼。 HTTP/2 提速很重要的一点是使用了多路复用,一般来说同一域名下只需要一个 TCP 连接。但是如果当这个连接中出现了丢包的情况,那就会导致 HTTP/2 的表现情况反倒不如 HTTP/1.1 了。

如果出现丢包的情况下,整个 TCP 便会要开始等待重传,导致了后面所有数据都阻塞了。但是对于 HTTP/1.1 来说,因为可以开启多个 TCP 连接,所以出现这种情况反到也就只影响其中你们一个连接而已,剩余的 TCP 连接还可以正常传输数据。

好嘛,有问题我们就解决问题,因为我们已经见识到了多路复用的好处,所以我们就去修改 TCP 协议,不过这已经是一件不可能完成的任务了。TCP 真的是太元老了,对 TCP 进行更新意味着要从操作系统上入手,那么整个协议将不会被所有的老系统所支持,新系统的推广何其艰难。

所以谷歌就更起炉灶搞了一个基于 UDP 协议的 QUIC 协议,因为 UDP 不需要三次握手,2016年,IETF开始致力于协议的标准化。 将QUIC拆分为基于传输层的和应用层的协议。应用层协议被称为 HTTP-over-QUIC 在2018年11月,IETF宣布 HTTP-over-QUIC 被正式命名为HTTP / 3。

如果上面大段背景介绍觉得烦,我们直接看下文即可:

  1. QUIC 协议有哪些优点,如何实现 0-RTT?

    1. QUIC 协议在传输层就支持多路复用,避免了队头阻塞问题。
    2. QUIC 协议基于 UDP,更自由更高效
    3. QUIC 协议借鉴了 TFO 的思想,支持会话上下文缓存,方便恢复,具备实现 0-RTT 的可能
  2. 传统的 HTTP2 + SSL + TCP 协议栈有哪些缺点?

    1. SSL 的会话恢复依然需要一个 RTT,而且难以合并到 TCP 层
    2. TCP 的滑动窗口存在队头阻塞问题
    3. TCP 的重传纠错会浪费一个 RTT
  3. 为什么 Google 要另起炉灶,基于 UDP 去做?

    1. TCP 由操作系统实现,很难更新
    2. UDP 非常高效,几乎没有性能负担
    3. 将 QUIC 嵌入到 Chrome 中可以方便后续的升级迭代
  4. QUIC的特性究竟有哪些?

    1. 利用缓存,显著减少连接建立时间
    2. 改善拥塞控制,拥塞控制从内核空间到用户空间
    3. 没有 head of line 阻塞的多路复用
    4. 前向纠错,减少重传
    5. 连接平滑迁移,网络状态的变更不会影响连接断线。

改编自 全栈养成计划 和 冰霜之地

实现

目前支持 QUIC 的 Web 服务软件主要是 LiteSpeed 和 Caddy,Nginx 尚不支持现有教程都是通过 Docker 结合 Nginx+Caddy 来实现,稳定性和可靠性都得打上问号。

所以我就比较推荐基于 LiteSpeed 的来实现了,LiteSpeed 是一款企业级商业 Web 服务,相比开源社区软件会有着更好的稳定性和可靠性。值得一提的是 HTTP/2 也是由 Lite Speed 率先实现的。

简单介绍:

LiteSpeed 即 LiteSpeed Web Server(简称 LSWS),是一款企业级商用 Web 服务软件,可以完美的 Apache HTTPD 兼容体验,.htaccess 规则可以直接兼容而不像 Nginx 需要重写,并兼容常用的mod扩展。得益于基于事件的架构优势,静态内容比Apache Httpd 快 5 倍 ,动态内容更是快 40 倍,HTTPS 访问快 3 倍并可以应用硬件加速器。

更多介绍请看:https://www.llstack.com/zh/LiteSpeed/

安装

这里我推荐通过 LLStack 一键包进行 Lite Speed 的安装。 安装教程:https://www.llstack.com/zh/install/

一、篇幅限制,这里以安装简单的轻量版为例。在 SSH 终端中输入:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ivmm/LLStack/master/install.sh)" 2>&1 | tee llstack-all.log

我们安装完成:

使用 LiteSpeed 轻松为网站开启 HTTP/3 实践-米饭粑

二、开始设置虚拟主机,运行脚本:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ivmm/LLStack/master/vhost.sh)"

详细讲解请看文档:创建虚拟主机-步骤详解

三、在第五步确认是否要开启HTTPS,输入 y 无论是 HTTP/2 还是 HTTP/3 都依赖于 HTTPS。

使用 LiteSpeed 轻松为网站开启 HTTP/3 实践-米饭粑

四、第六步然后会让我们输入 密钥文件(.Key)和证书文件(.crt)的路径,不一定马上就要存在,我们可以后续等创建完虚拟主机后再放到对应的路径上(会有报错,但是可以忽略)。

使用 LiteSpeed 轻松为网站开启 HTTP/3 实践-米饭粑

五、第七步询问是否开启 HTTP/3 功能,输入 y 为开启

使用 LiteSpeed 轻松为网站开启 HTTP/3 实践-米饭粑

六、然后我们输入任意键即可开始自动配置,CTRL+C 为取消

使用 LiteSpeed 轻松为网站开启 HTTP/3 实践-米饭粑

七、然后就可以看到输出了。

使用 LiteSpeed 轻松为网站开启 HTTP/3 实践-米饭粑

八、因为 HTTP/3 依赖于 UDP,而我们往往只是会开启 TCP 协议,所以我们还需要打开防火墙和安全组(没有就忽略)的UDP 443 端口。

  1. 轻量版使用 Firewall 防火墙 在终端中运行:
firewall-cmd --zone=public --add-port=443/udp --permanent
firewall-cmd --reload 
  1. 面板版在 防火墙 - 开放网络端口 中,端口输入 443 协议选择UDP,点击确定后点击重载。

使用 LiteSpeed 轻松为网站开启 HTTP/3 实践-米饭粑

更详细的防火墙设置教程请看:防火墙设置

  1. 服务器安全组以阿里云为例: 协议类型选择 自定义UDP,端口范围443/443 ,授权对象0.0.0./0

使用 LiteSpeed 轻松为网站开启 HTTP/3 实践-米饭粑

九、更详细的 QUIC 设置,可以在 LiteSpeed 图形化控制台中导航至 Configuare - Server - Tuning ,对 QUIC 进行配置,一般来说新手建议默认,打开 Enable QUIC 即可

使用 LiteSpeed 轻松为网站开启 HTTP/3 实践-米饭粑

调试

截至发稿浏览器仅有 Chrome 支持,Firefox 和 Safari 可能得等 HTTP/3 正式发稿后会获得支持。

一、Chrome 浏览器进入 chrome://flags/ 也没,将 Experimental QUIC protocol 设置 Enable 然后重启浏览器。

使用 LiteSpeed 轻松为网站开启 HTTP/3 实践-米饭粑

二、 打开网站,再打开开发者工具,在 Protocol 就可以看到了,HTTP/2 + QUIC 就是 HTTP/3:

使用 LiteSpeed 轻松为网站开启 HTTP/3 实践-米饭粑

HTTP/3 LiteSpeed LLStack QUIC
赞(11)
本文系作者 @妙正灰 原创发布在 米饭粑。未经许可,禁止转载。
LLStack - 基于LiteSpeed的一站式高性能PHP网站解决方案
上一篇
体验 AliyunLinux2 不多花一分钱提升15%服务器性能
下一篇
标签
Appnode Brotli CDN CentOS CentOS8 Debian DNS ECC ECS Ghost HTTP2 HTTPS IIS IPV6 Linux LiteSpeed MariaDB MySQL Nginx OLS OpenLiteSpeed OpenResty OSS PageSpeed PHP PHP7 QUIC Redis RHEL RHEL8 SSL TokuDB Ubuntu Windows Server 2016 Wordpress 云服务器 升级 域名 对象存储 微软 数据库 百度 笔记本 阿里云 阿里云ACP
归档
OpenLiteSpeed 更新至 1.6.10,开源版轻量高性能 Web Server
2年前
957 0
OpenLiteSpeed – 开源版轻量高性能 WebServer 更新至 1.6.9
2年前
874 1
站在巨人WordPress的肩膀上学架构
2年前
843 5
LiteSpeed Cache for WordPress - 免费的超性能企业级缓存插件
2年前
968 0
11
  • 11
Copyright © 2011-2022 米饭粑. Designed by nicetheme.
浙ICP备15006212号-1
  • 首页
  • 教程
  • 好物
  • 关于
  • 链接
  • 打赏
# 402 # # 113 # # 546 # # 548 # # 460 #
妙正灰
文科屌丝伪IT男一枚.
337
文章
385
评论
449
喜欢