宝塔已上架nginx1.25-27-http3/quic+brotli轻松搞定

关于http3/quic,老白之前在“WordPress宝塔面板编译nginx1.25开启http3/quic”一文说过它的好处,更快的加载,更低的消耗。不过当时宝塔官方并未上架nginx1.25的版本,需要自己慢慢鼓捣,还容易出错。最近老白发现宝塔软件商店已经推出了nginx1.25-1.27的版本,大家安装开启http3就变得非常简单了。再稍微搞一个brotli压缩,整个服务器端的WordPress优化基本就够了。

0.说明/注意

老白推荐的顺序是,先在安装的时候添加brotli模块编译,然后再进行http3/quic的相关设置

1.编译brotli压缩

Brotli是Google推出的开源压缩算法,通过变种的LZ77算法、Huffman编码以及二阶文本建模等方式进行数据压缩。与其他压缩算法相比,它有着更高的压缩效率。

点击安装,选择编译安装,打开添加自定义模块窗口如下图。(https://www.xcbtmw.com/8023.html

宝塔面板卸载原Nginx编译Brotli压缩

模块名称填写:ngx_brotli

模块简介填写:ngx_brotli

模块参数填写:--add-module=/www/server/nginx/src/ngx_brotli

前置脚本粘贴如下内容:

# 文件内各版本号为文章发布时最新,请按需要检查新版本并替换版本号
wget -O ngx_brotli.zip https://github.com/google/ngx_brotli/archive/v1.0.0rc.zip
unzip ngx_brotli.zip
mv ngx_brotli-1.0.0rc ngx_brotli
cd ngx_brotli/deps
rm -rf brotli
wget -O brotli.zip https://github.com/google/brotli/archive/v1.0.9.zip
unzip brotli.zip
mv brotli-1.0.9 brotli
cd /www/server/nginx/src

完成以后提交并打上勾,点击安装,等待完成即可。

打开 Nginx 管理器,左侧菜单选择配置修改,在52行附近找到gzip部分,在其前面插入brotli的配置信息:

        brotli on;
        brotli_comp_level 6;
        brotli_min_length 10;
        brotli_window 1m;
        brotli_types *;
        brotli_static always;
各个参数的具体作用可以在https://github.com/google/ngx_brotli找到,这里提供通用版本。

保存以后如下图:

宝塔面板卸载原Nginx编译Brotli压缩

2.开启http3/quic

其中nginx配置规则包括两部分,标头和ssl证书(如有报错,请看详细教程https://www.xcbtmw.com/30007.html

2.1 标头

在所有的站点域名中,只需要有一个 server 域中配置 reuseport 选项即可

listen 443 ssl;
listen 443 quic reuseport; 
listen [::]:443 ssl;
listen [::]:443 quic reuseport;
http2 on;
http3 on;
http3_hq on;
quic_retry on;
其他的站点如下配置即可
listen 443 ssl;
listen 443 quic; 
listen [::]:443 ssl;
listen [::]:443 quic;
http2 on;
http3 on;
http3_hq on;
quic_retry on;

2.2 ssl证书

在每一个对应站点的Nginx配置文件上面的代码后面添加以下代码,然后重启 Nginx即可生效!

#把原 ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;中的TLSv1.1以下版本的删掉, TLSv1.1 已经被淘汰了,密码套件也更新了
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_early_data on;
ssl_stapling on;
ssl_stapling_verify on;
# 添加 Early-Data 头告知后端, 防止重放攻击
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 X-Real-IP $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_buffering off;
proxy_http_version 1.1;
proxy_read_timeout 600s;
add_header Alt-Svc 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"'; 
add_header quic-status $http3 always;
add_header x-quic 'h3' always;

2.3 打开TLS1.3

宝塔面板—高级设置—TLS设置

WordPress宝塔面板编译nginx1.25开启http3/quic