宝塔面板启用 QUIC 与 Brotli 的完整教程

news2024/9/20 16:47:46

环境

系统:Ubuntu 22.04.4 LTS x86_64

宝塔版本:7.7.0 (可使用本博客提供的一键安装优化脚本)

nginx版本:1.26.1

开放UDP端口

注意:在你的服务器商家那里也要开放443 udp端口

sudo ufw allow 443/udp

然后重新加载 UFW 以使新规则生效:

sudo ufw reload

安装 ngx_brotli模块

cd /www/server
git clone --recurse-submodules -j8 https://github.com/google/ngx_brotli

添加 ngx_brotli 编译参数

echo "--add-module=/www/server/ngx_brotli" > /www/server/panel/install/nginx_configure.pl

到这一步其实可以编译nginx了,但是为了更好的性能释放,先升级OpenSSL后再编译

升级OpenSSL 版本

宝塔中编译安装的 Nginx 使用的是 OpenSSL 1.1.1(版本老旧),可以使用命令查看

nginx -V 2>&1 | grep -oP 'built with OpenSSL \K\d+\.\d+\.\d+'

开始升级

cd /www/server && \
mkdir openssl && \
wget https://github.com/openssl/openssl/releases/download/openssl-3.3.1/openssl-3.3.1.tar.gz && \
tar -xzf openssl-3.3.1.tar.gz -C openssl --strip-components=1 && \
rm openssl-3.3.1.tar.gz

修改宝塔面板的 Nginx 安装脚本

cd /www/server/panel/install
wget -O zzbnginx.sh https://raw.githubusercontent.com/woniu336/open_shell/main/zzbnginx.sh

编译安装 Nginx,如果以前已安装过 Nginx 则先卸载

sh zzbnginx.sh install 1.25

等待编译完成

注意后面的小版本号不要输入,当前输入 1.26 即等于 1.26.1 版。

安装完成后,使用 nginx -V 查看编译详情:

如服务器的性能较强,CPU 与内存足够,还可以在 http 块(即宝塔面板>Nginx>设置>配置修改)中添加以下指令:

http3_max_concurrent_streams 256;
http3_stream_buffer_size 128k;

http3_max_concurrent_streams 这个指令是用来限制在单个 HTTP/3 连接上可以同时处理的最大流数量。默认值 128 意味着一个单一的 HTTP/3 连接可以同时承载最多 128 个双向数据流。

http3_stream_buffer_size 指令用于设置 HTTP/3 流的缓冲区大小。这个缓冲区用于存储待发送或已接收但尚未处理的数据。其默认值为 64k,增加缓冲区大小可以减少 I/O 操作的频率,可能对性能有所提升,特别是在处理大块数据传输时。

不过需要注意的是:这两个参数的值越大,占用的内存较多。

启用 Brotli压缩

nginx编译完成后,打开nginx配置,在gzip_disable的下方添加以下代码

        brotli on;
        brotli_comp_level 6;    
        brotli_buffers 16 8k; 
        brotli_min_length 20; 
        brotli_types *;
        brotli_static always;   
        brotli_window 512k; 

在这里插入图片描述

保存并重启 Nginx 。

当你重启nginx可能会报错的原因:

从 Nginx 1.25.1 开始,不再支持在 listen 中使用 http2 参数,需要单独一行 http2 on

所以,在站点配置中或其他站点,把http2去掉,单独一行,文末有说明

启用 QUIC/HTTP3

前提,你已经配置了证书

打开你的站点,完整的配置在文末,把域名改成你的即可:

注意事项:

  • listen 443 quic reuseport; ## reuseport 只能在一个站点使用,其他站点请去掉reuseport
  • listen 443 quic; ## 例如,其他站点没有reuseport参数
  • include enable-php-81.conf; ## 这里的php是8.1版本,请修改成你使用的版本
  • access_log和error_log 后面也要改成你的域名
  • root /www/wwwroot/baidu.org; 这里改成你的站点目录
  • server_name baidu.org www.baidu.org; 改成你的域名

当你重启nginx会报错的原因:

从 Nginx 1.25.1 开始,不再支持在 listen 中使用 http2 参数,需要单独一行 http2 on

所以,在站点配置中或其他站点,把http2去掉,单独一行,如图

在这里插入图片描述

完整站点配置

server
{
    listen 80;
    listen 443 ssl;
    listen 443 quic reuseport;
    http2 on;
    http3 on;
    http3_hq on;
    quic_retry on;

    server_name baidu.org www.baidu.org;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/baidu.org;

    # SSL 配置
    ssl_certificate    /www/server/panel/vhost/cert/baidu.org/fullchain.pem;
    ssl_certificate_key    /www/server/panel/vhost/cert/baidu.org/privkey.pem;
    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_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_early_data on;
    ssl_stapling on;
    ssl_stapling_verify on;

    # HTTP重定向至HTTPS
    if ($server_port !~ 443){
        rewrite ^(/.*)$ https://$host$1 permanent;
    }

    # Proxy headers
    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 Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_buffering off;
    proxy_http_version 1.1;
    proxy_read_timeout 600s;

    # HTTP/3 headers
    add_header Alt-Svc 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"';
    add_header quic-status $http3 always;
    add_header x-quic 'h3' always;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
    
    # Error pages
    error_page 497 https://$host$request_uri;

    # PHP 配置
    include enable-php-81.conf;

    # Rewrite rules
    include /www/server/panel/vhost/rewrite/baidu.org.conf;

    # 禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }

    # 一键申请SSL证书验证目录相关设置
    location ~ \.well-known {
        allow all;
    }

    # Static file handling
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        error_log /dev/null;
        access_log /dev/null;
    }

    location ~ .*\.(js|css)?$
    {
        expires      12h;
        error_log /dev/null;
        access_log /dev/null; 
    }

    # Logging
    access_log  /www/wwwlogs/baidu.org.log;
    error_log  /www/wwwlogs/baidu.org.error.log;
}

保存并重启 Nginx 。

http3/quic检测

https://http3.wcode.net/

https://http3check.net/

重启nginx报错http2

  • 从 Nginx 1.25.0 开始,不再支持在 listen 中使用 http3 参数,需要修改为 quic
  • 从 Nginx 1.25.1 开始,不再支持在 listen 中使用 http2 参数,需要单独一行 http2

所以,查找其他站点配置文件,把 http2 去掉,单独一行,比如:

server {
    listen 443 ssl;
    listen 443 quic reuseport;
    http2 on;

浏览器配置

谷歌Chrome浏览器 访问:chrome://flags/
启用:Experimental QUIC protocol (enable-quic)

微软新版Edge浏览器 访问:edge://flags
启用:Experimental QUIC protocol 设置为“Enabled”

火狐Firefox浏览器 访问:about:config
启用:network.http.http3.enabled


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1995620.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【漏洞复现】maxView Storage Manager 远程代码执行漏洞

maxView Storage Manager使查看、监控和配置系统中基于Microsemi RAID适配器构建的所有存储变得简单。⽅便的图形⽤户界⾯(GUI)在Microsemi产品线和⽀持的操作系统(包括 Windows、Linux、VMWare和Solaris)中的外观和操作都相同。使…

多线程编译

多线程与多进程一样,为了能同时执行多个任务 区别 多进程 创建子进程,子进程会拷贝父进程的数据段的所有内存 进程是资源的获取单位 每个进程完全独立运行 更加关注两个进程之间的通信问题 多线程 线程是进程的最小组成单位,每个进程…

代码随想录算法训练营Day32 | 56. 合并区间 | 738.单调递增的数字 | 968.监控二叉树

今日任务 56. 合并区间 题目链接&#xff1a; https://leetcode.cn/problems/merge-intervals/题目描述&#xff1a; Code class Solution { public:vector<vector<int>> merge(vector<vector<int>>& intervals) {ranges::sort(intervals, [&…

Spring:springboot集成jetcache循环依赖问题

springboot版本&#xff1a;2.6.14 jetcache版本&#xff1a;2.6.2 启动项目报错如下&#xff1a; 解决方案&#xff1a; jetcache版本升级到2.6.4 https://github.com/alibaba/jetcache/issues/624

IT运维岗适用的6本证书

作为IT从业人员&#xff0c;不断提升自身的专业技能和知识是提升职场竞争力、助力升职加薪的重要途径。特别是在运维领域&#xff0c;虽然工作看似简单&#xff0c;但实际上需要掌握的技术知识却相当全面。为了全面提升自己的技术能力&#xff0c;并证明自己的专业能力&#xf…

每周心赏|七夕这样玩也太超前了吧,速来AI一下!

明天就是七夕节了&#xff0c;是时候给七夕节来点大震撼了&#xff0c;AI带你玩点不一样的&#xff01; 给大家挖掘了几个有梗又有爱的智能体。信我&#xff0c;快来试玩&#xff01; 不知道大家是什么人&#xff1f;反正&#xff0c;我是一个很爱测评的人&#x1f92d;&#…

【GaussDB(DWS)】数仓部署架构与物理结构分析

数仓架构与物理结构分析 一、部署架构二、物理结构三、测试验证 一、部署架构 华为数据仓库服务DWS&#xff0c;集群版本8.1.3.x 集群拓扑结构&#xff1a; 上述拓扑结构为DWS单AZ高可靠部署架构&#xff0c;为减少硬件故障对系统可用性的影响&#xff0c;建议集群部署方案遵…

制造企业技术图纸不受控的影响与规避方法

在制造企业中&#xff0c;技术图纸是产品设计、制造与检验的核心依据。若技术图纸不受控&#xff0c;将对企业造成诸多不利影响。 首先&#xff0c;产品质量无法得到保障。不受控的图纸可能存在设计缺陷、尺寸误差或工艺不合理等问题&#xff0c;导致生产出的产品不合格&#…

独辟蹊径:用Python打造你的副业帝国,迈向财富自由

在当今这个数字化时代&#xff0c;掌握一门编程语言如同拥有了一把开启无限可能的钥匙。Python&#xff0c;以其简洁的语法、强大的库支持和广泛的应用领域&#xff0c;成为了许多人实现副业收入乃至财富自由的首选工具。本文将探讨如何利用Python技能开启副业&#xff0c;并逐…

mysql中的表查询操作

performance_schema 系统数据库用于收集Mysql服务器的性能参数&#xff0c;以便数据库管理员了解产生性能瓶颈的原因。information_schema 系统数据库定义了所有数据库对象的元数据信息。 表的常规操作&#xff08;增删改查&#xff09; 我们经常对表进行以下操作 插入&#x…

OceanMind海睿思受邀参加第41届CCF中国数据库学术会议

CCF 中国数据库学术会议始于1977年&#xff0c;是由数据库专业委员会举办的中国数据库领域的最高学术会议&#xff0c;第41届中国数据库学术会议&#xff08;NDBC 2024&#xff09;将于2024年8月7日-8月10日在新疆乌鲁木齐举行。中新赛克副总兼大数据产品线总经理卢云川先生受邀…

匹配格值的前半部分

Excel有多列含空格的源数据&#xff0c;如C3:D19&#xff1b;还有若干用于比较的数据项&#xff0c;由"-"隔为前后两部分&#xff0c;如F3:F7。 要求用源数据的每列与数据项的前半部分进行比较&#xff0c;将匹配上的数据项填在该列下面。 使用 SPL XLL spl("d…

DALL•E 3 重新定义图像生成的人工智能

在人工智能的不断发展中&#xff0c;图像生成技术一直是一个备受关注的领域。OpenAI 的 DALL-E 系列自发布以来&#xff0c;便因其卓越的图像生成能力而备受瞩目。作为这一系列的最新成员&#xff0c;DALL-E 3 再次突破了技术的界限&#xff0c;为图像生成带来了全新的可能性。…

嵌入式day23

实现minishell minishell功能&#xff1a; 1,cp 复制文件 cp 1 2 把文件1复制成文件2 2,cat 查看文件 cat 1 查看文件到内容 3,cd 切换路径 cd 1 切换到目录1中 4,ls 查看当前目录下到文件 ls 或 ls /home 5,ll 查看当前目录下到文件 ll 或 ll /home 6,ln -s 创建软链接…

《加密与解密 》第四版读书笔记2

1、注入技术 1.1注入技术的背景 在Windows操作系统中&#xff0c;各个进程的内存空间是相互独立的&#xff0c;虽然能通过函数VirtualQueryEx/VirtualProtectEx查询、设置目标进程的内存信息和页属性&#xff0c;通过函数ReadProcessMemory/WriteProcessMemory对目标进程的内存…

第八天 排行榜功能

排行榜分析&#xff1a; 榜单分为两类&#xff1a; 实时榜单&#xff1a;也就是本赛季的榜单 历史榜单&#xff1a;也就是历史赛季的榜单 之前一个积分记录明细表 要知道&#xff0c;每个用户都可能会有数十甚至上百条积分记录&#xff0c;当用户规模达到百万规模&#xff…

C#调用c++的dll方法,动态调用c++dll的方法

文章目录 一、创建c的dll1.新建项目2.删除vs自建的.cpp和.h文件3.新建Algorithm.h和Algorithm.cpp4.编译c1.编译2.解决报错3.再次编译可以看到已经成功。4.查看成功输出的dll。 二、创建c#项目1.创建一个console控制台程序。2.把dll拷贝到c#生成的程序根目录。3.在c#的program.…

WPF自定义控件的应用(DynamicResource的使用方法)

1 DynamicResource的使用方法 可以在字典文件 的抬头区写入数&#xff1a; <SolidColorBrush x:Key"PrimaryBackgroundColor" Color"#FFABAdB3"/><SolidColorBrush x:Key"TextBox.MouseOver.Border" Color"#FF7EB4EA"/>&l…

得-物任务脚本

得某物任务脚本 该脚本主要用于自动化执行“得物”APP中的一些日常任务和活动&#xff0c;包括签到、任务完成、奖励领取等操作。使用了多个第三方库来加密、签名和发送请求。 任务的定时执行 脚本通过定时任务&#xff08;cron&#xff09;设置在每天的11:10执行。使用的依…

通用人工智能的中国道路

朱松纯 北京大学智能学院院长 北京大学人工智能研究院院长 《为机器立心》、《为人文赋理》 1 什么是“人”——解构人文的认知架构与UV理论 从物体&#xff0c;到生命体、智能体、智人。。。 生命度&#xff08;Animacy&#xff09;&#xff1a;物体与智能体的边界&#xff0…