Nginx 1.25配置QUIC和HTTP3

Nginx 1.25配置QUIC和HTTP/3

Nginx在编译时需要配置相应的SSL库,以确保能够支持HTTP3.0和HTTP2.0等基于HTTPS的协议。这些加密算法主要由OpenSSL提供。另外,BoringSSL是谷歌创建的OpenSSL分支,专门用于支持TLS 1.3的UDP协议的0-RTT数据传输加密算法。BoringSSL的特点在于其与OpenSSL的高度兼容性和同步性,一些改进和特性会逐步融入到OpenSSL中。

Nginx从1.25版本开始正式支持QUIC和HTTP/3协议。特别是从1.25.0版本开始,Linux环境下的Nginx二进制包就已经内建了QUIC和HTTP/3的支持。然而,这些新支持的协议目前仍处于实验性阶段,因此可能需要用户自行配置和编译Nginx以实现使用。

官方提供了三种SSL库供用户选择,具体可参见Nginx官方文档中的相关内容 https://nginx.org/en/docs/quic.html 在选择SSL库时,如果用户希望充分利用QUIC和HTTP/3的特性,建议使用专门为这些协议设计的SSL库,如BoringSSL、LibreSSL或QuicTLS。如果不使用这些专用的SSL库,Nginx将退回到使用OpenSSL的兼容层,可能会在某些功能上有所限制或无法实现完全的支持。

我这里使用BoringSSL来演示。

编译安装BoringSSL

*注意编译安装 BoringSSL 需要使用 cmake3 以上的版本.

# 下载boringssl库
git clone --depth=1 https://github.com/google/boringssl.git
安装相关依赖
apt-get update
apt-get install -y build-essential cmake
add-apt-repository ppa:longsleep/golang-backports
apt-get update
apt-get install -y openssl golang-go libpcre3 libpcre3-dev libssl-dev zlib1g-dev
编译BoringSSL
cd boringssl && mkdir build && cd build && cmake .. && make && cd ../../

编译安装Nginx

截止到2024年1月,Nginx目前最新版本为1.25.3

下载Nginx源码包
wget https://nginx.org/download/nginx-1.25.3.tar.gz
tar xvf nginx-1.25.3.tar.gz
useradd nginx -s /sbin/nologin -M
编译安装nginx
./configure  --prefix=/usr/local/nginx \--with-debug \--with-http_v3_module \--with-http_v2_module \--with-cc-opt="-I../boringssl/include"    --with-ld-opt="-L../boringssl/build/ssl  -L../boringssl/build/crypto"make && make install
检查Nginx模块

配置Nginx
# 配置文件中省略了部分默认内容。
user  nginx;
worker_processes  1;events {worker_connections  65535;
}http {include       mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for" $http3';server {listen       443 quic reuseport; 	# 启用 quic 协议listen       443 ssl; 				# 启用 http2 协议浏览器不支持 http3 时,可以选择 http2server_name  www.example.com;		ssl_protocols       TLSv1.3;  # QUIC requires TLS 1.3 #支持tls协议1.3ssl_certificate      /usr/local/nginx/ssl/www.example.com/cert.pem;ssl_certificate_key  /usr/local/nginx/ssl/www.example.com/cert.key;ssl_session_cache    shared:SSL:1m;ssl_session_timeout  5m;add_header Alt-Svc 'h3=":443"; ma=86400'; # Alt-Svc 全称为 “Alternative-Service”,直译为“备选服务”。该头部列举了当前站点备选的访问方式列表,让服务器可以告诉客户端 “看,我在这个主机的这个端口用这个协议提供相同的服务”。一般用于在提供 “QUIC” 等新兴协议支持的同时,实现向下兼容location / {root   html;index  index.html index.htm;}}
}
启动Nginx

验证 HTTP3 生效

由于目前浏览器对HTTP3.0/QUIC的支持性有限,可以使用 https://http3check.net/ 来验证站点启用HTTP3是否成功。

参考:

  • https://www.google.cn/chrome/canary/
  • https://cloudflare-quic.com/
  • https://hg.nginx.org/nginx-quic
  • https://github.com/google/boringssl
  • https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Alt-Svc
    😕/hg.nginx.org/nginx-quic
  • https://github.com/google/boringssl
  • https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Alt-Svc
  • https://http3check.net/

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

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

相关文章

2024 年人工智能(AI)会有哪些新趋势和新突破?无际Ai分享

随着科技的不断发展,人工智能领域正在以惊人的速度迈向前所未有的高度。在 2024 年,我们可以期待看到多个领域的重大突破,这将为人工智能技术带来新的应用和可能性。 以下是一些可能出现的新领域和突破性进展: 强化学习应用拓展&…

python中yield的用法

yield(生成器) v. 产生(收益、效益等),产生(结果);出产(天然产品,农产品,工业产品);屈服,让步;放弃,让出&…

MySQL前百分之N问题--percent_rank()函数

PERCENT_RANK()函数 PERCENT_RANK()函数用于将每行按照(rank - 1) / (rows - 1)进行计算,用以求MySQL中前百分之N问题。其中,rank为RANK()函数产生的序号,rows为当前窗口的记录总行数 PERCENT_RANK()函数返回介于 0 和 1 之间的小数值 selectstudent_…

MicrosoftEdge浏览器打开网页出现“此网站被人举报不安全”问题时解决办法

1:有时候不知怎么回事用电脑自带的微软浏览器进行搜索会出现以下的问题 这可能是由于我们的浏览器安全审查过于严格引起的 Windows10正式版系统下,使用Edge浏览器浏览网页时候,发现整个页面突然变成了红色,显示“已有人举报此网站…

【高效开发工具系列】markdown转HTML

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

打击者H5小游戏

欢迎来到程序小院 打击者 玩法&#xff1a;点击飞机上下左右移动躲过子弹射击&#xff0c;打掉上方敌人飞机&#xff0c; 遇到药包会增加能量&#xff0c;弹药包会升级武器&#xff0c;快去射击吧^^。开始游戏https://www.ormcc.com/play/gameStart/262 html <div id"…

java8 Duration类学习

Duration类 官网地址 基于时间的时间量&#xff0c;例如“34.5秒”。 此类以秒和纳秒为单位对时间的量或量进行建模。它可以使用其他基于持续时间的单位访问&#xff0c;如分钟和小时。此外&#xff0c;可以使用DAYS单位&#xff0c;并将其视为完全等于24小时&#xff0c;从…

C语言第十三弹---VS使用调试技巧

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 VS调试技巧 1、什么是bug 2、什么是调试&#xff08;debug&#xff09;&#xff1f; 3、Debug和Release​编辑​ 4、VS调试快捷键 4.1、环境准备 4.2、调试…

python--文件读取与写入

"""1、文件的读取(1)读取文件&#xff1a;open1、file&#xff1a;指定文件的路径路径可以分成相对路径和绝对路径2、mode&#xff1a;指定文件的读取的的模式&#xff1a;1、r open for reading (default) 表示的是读模式2、w open for writing, t…

计算机毕业设计 | SpringBoot+vue学生成绩管理系统教务管理系统

1&#xff0c;项目背景 随着我国高等教育的发展&#xff0c;数字化校园将成为一种必然的趋势&#xff0c;国内高校迫切需要提高教育工作的质量与效率&#xff0c;学生成绩管理工作是高校信息管理工作的重要组成部分&#xff0c;与国外高校不同&#xff0c;他们一般具有较大规模…

快来建服组队一起捕捉帕鲁

2024年初最火的steam游戏《幻兽帕鲁》&#xff0c;大家都已经玩上了吧&#xff1f; 如何跟朋友组队一起在广阔的世界中捕捉神奇的生物“帕鲁”&#xff0c;快来金山云解锁吧~ 第一步&#xff1a;创建游戏服务器 部署一台幻兽帕鲁云服务器&#xff1a;在控制台上选择离您更近…

在Windows11的WSL上运行Llama2-7b-chat 下

上一篇博客讲了我跑Llama的demo的心路历程&#xff08;上一篇博客传送门&#xff09;&#xff0c;这篇我们主要是讲下怎么配置。 快速开始 使用Linux、Linux、Linux&#xff0c;重要的事情说三遍&#xff0c;如果你和我一样懒得安装双系统&#xff0c;那么在Windows下安装一个…

【Pytorch 第三讲】如何使用pre-trained weights 来训练自己的模型

# 理由# 有时在训练自己的模型时&#xff0c;如果从头开始训练自己的模型&#xff0c; 不但费时费力&#xff0c; 有时可能训练了很久&#xff0c; 好不容易收敛&#xff0c; 发现结果不是太好。 如果能够基于被人 已经训练好的权重&#xff0c; 初始化自己的模型。那么在训练…

二百二十一、HiveSQL报错:return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask

一、目的 在运行HiveSQL时&#xff0c;执行报错 tatement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask 二、在yarn上查看任务报错 The required MAP capability is more than the supported max container capability in t…

synchronized 和 ReentrantLock 的区别

synchronized 和 ReentrantLock 都是 Java 中的同步机制&#xff0c;用于确保在多线程环境下&#xff0c;同一时刻只有一个线程能够访问特定的代码块、方法或对象。它们的区别在于实现方式和性能上。 synchronized、ReentrantLock synchronized示例 ReentrantLock可重入公平性示…

使用流服务器m7s对接gb28181

优:sip品牌兼容性比较好,大华,海康都稳定可以,srs的5.0 sip品牌兼容性大华没反应,akstream-sip 大华也有问题,wvp也还可以 缺:目前最新的4.7.4版本,,sip协议用udp正常,TCP不正常(估计不支持),移动、事件,预警不支持 一、下载对应的m7s的执行文件 官网:快速起步…

Android开发中自定义View实现RecyclerView下划线

本篇文章主要讲解的是有关RecyclerView下划线的使用&#xff0c;主要有几个方法&#xff0c;具体如下&#xff1a; 第一种方式&#xff1a;网格分割线 public class GridDivider extends RecyclerView.ItemDecoration { private Drawable mDividerDarwable; private i…

深入理解c语言printf

printf(格式控制&#xff0c;输出列表); printf的使用方法大全 #include<stdio.h> int main(){double a123.111;int m-156;char csA;char *str"%d,%d";printf("%d",100,1);return 0; }

TextCNN的复现

TextCNN的复现–pytorch的实现 对于TextCNN的讲解&#xff0c;可以参考这篇文章 Convolutional Neural Networks for Sentence Classification - 知乎 (zhihu.com) 接下来主要是对代码内容的详解&#xff0c;完整代码将在文章末尾给出。 使用的数据集为电影评论数据集&…

(五)MySQL的备份及恢复

1、MySQL日志管理 在数据库保存数据时&#xff0c;有时候不可避免会出现数据丢失或者被破坏&#xff0c;这样情况下&#xff0c;我们必须保证数据的安全性和完整性&#xff0c;就需要使用日志来查看或者恢复数据了 数据库中数据丢失或被破坏可能原因&#xff1a; 误删除数据…