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.

tonight-we-test-5c386e.jpg

目录

开始

本篇基于 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

The Rust toolchain installer

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?

结束

道理我都懂,可是这有什么用呢?

看看 这个 就能知道,目前,基本没啥用。

参考链接

标签: none

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

添加新评论