在 LNMP 上体验 HTTP/3
Update:lnmp.org 及 oneinstack 疑似被收购,建议使用由 DigitalOcean 提供的 NGINXConfig 。早前就因为跑不动编译换到了包管理器安装和更新,感觉好棒好棒的
当用 🥧 quiche 的站长遇上用 Nightly / Canary 浏览器的用户之时,HTTP/3 便开始了。
本站未开启 HTTP/3,且目前不考虑启用。
Update:现在上 Cloudflare CDN 就能有 HTTP/3,然而用处不大
Update:现在 Nginx 新版能用 HTTP/3 和 QUIC,然而用处不大
Support for QUIC and HTTP/3 protocols is available since 1.25.0. Also, since 1.25.0, the QUIC and HTTP/3 support is available in Linux binary packages.
The QUIC and HTTP/3 support is experimental, caveat emptor applies.
目录
开始
本篇基于 LNMP 一键安装包 进行操作。
给 nginx 打 patch
下载 quiche
git clone --recursive https://github.com/cloudflare/quiche
进入 lnmp1.6/src
目录解压 nginx
tar xzvf nginx-1.16.1.tar.gz
进入源码目录打 patch
cd nginx-1.16.1
patch -p01 < /path/to/quiche/extras/nginx/nginx-1.16.patch
返回上级目录重新打包并替换
rm nginx-1.16.1.tar.gz
tar czvf nginx-1.16.1.tar.gz nginx-1.16.1
rm -r nginx-1.16.1
安装 nginx
修改 lnmp.conf
Nginx_Modules_Options='--with-http_v3_module --with-openssl=/path/to/quiche/deps/boringssl --with-quiche=/path/to/quiche'
Enable_Nginx_Openssl='n'
安装 rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
修改安装脚本
在 lnmp1.6/include/upgrade_nginx.sh
第二行处添加 rust 的 PATH
export PATH="/path/to/.cargo/bin:$PATH"
否则编译会因为 /bin/sh: 1: cargo: not found
失败。
开始编译
执行 lnmp1.6/upgrade.sh nginx
,输入版本号 1.16.1
并确认,等待安装成功。
配置 nginx
修改 website.conf
server {
# Enable QUIC and HTTP/3.
listen 443 quic reuseport;
# Enable HTTP/2 (optional).
listen 443 ssl http2;
ssl_certificate cert.crt;
ssl_certificate_key cert.key;
# Enable all TLS versions (TLSv1.3 is required for QUIC).
ssl_protocols TLSv1.3 TLSv1.2;
# Add Alt-Svc header to negotiate HTTP/3.
add_header alt-svc 'h3-23=":443"; ma=86400';
}
重载 nginx lnmp nginx reload
后生效。
测试
How to Test if a Website supports HTTP/3?
结束
道理我都懂,可是这有什么用呢?
看看 这个 就能知道,目前,基本没啥用。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。