网站首页 > 技术教程 正文
日前Nginx发布了主线版本 1.25.0,该版本引入了对QUIC 和HTTP/3协议的支持,Nginx正式跨入HTTP/3时代。从1.25.0开始,QUIC和HTTP/3在Linux二进制包中启用。
QUIC和HTTP/3支持是实验性的,需要用户酌情使用。
从源头构建
HTTP/3支持具体支持由ngx_http_v3_module模块提供。对于源码编译版本需要用户自行启用该模块:
--with-http_v3_module
编译参数启用。
HTTP/3的支持需要底层SSL库提供编译和运行时支持,Nginx官方建议通过BoringSSL,LibreSSL或者QuicTLS来提供支持。OpenSSL虽然也可以支持,但是不兼容早期的数据。
从源码构建需要使用configure命令(关详细信息,见Nginx官方文档):
对于BoringSSL,使用
./configure
--with-debug
--with-http_v3_module
--with-cc-opt="-I../boringssl/include"
--with-ld-opt="-L../boringssl/build/ssl
-L../boringssl/build/crypto"
对QuicTLS配置:
./configure
--with-debug
--with-http_v3_module
--with-cc-opt="-I../quictls/build/include"
--with-ld-opt="-L../quictls/build/lib"
或者LibreSSL:
./configure
--with-debug
--with-http_v3_module
--with-cc-opt="-I../libressl/build/include"
--with-ld-opt="-L../libressl/build/lib"
配置后,使用make编译安装的。
配置
listen指令中的ngx_http_core_module模块有一个新参数快它在指定端口上启用HTTP/3 over QUIC。
quic参数也可以指定重用端口参数以使其与多个worker一起正常工作。有关指令列表,详见 ngx_http_v3_module说明。
启用地址验证:
quic_retry on;
启用0-RTT:
ssl_early_data on;
启用GSO (通用分段卸载):
quic_gso on;
设定主机证书:
quic_host_key <filename>;
QUIC启用需要默认ssl_protocols指令指定为TLSv1.3协议。
默认情况下,GSO Linux特定优化被禁用。如果配置了相应的网络接口,请启用它支持GSO。
示例配置
http {
log_format quic '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" "$http3"';
access_log logs/access.log quic;
server {
listen 8443 quic reuseport;
listen 8443 ssl;
ssl_certificate certs/example.com.crt;
ssl_certificate_key certs/example.com.key;
location / {
add_header Alt-Svc 'h3=":8443"; ma=86400';
}
}
故障排查
如果配置的HTTP/3没有生效,或者出现其他问题,可以通过一下排查方法进行排查。
1、检查nginx是使用正确版本SSL底层库构建的,并且在运行时使用了正确的SSL库,可以nginx -V显示当前使用SSL库的相关运行参数。
2、确保客户端实际通过QUIC发送请求。建议从一个简单的控制台客户端开始。例如ngtcp2在尝试之前确保服务器配置正确使用可能对证书非常挑剔的真实浏览器。
3、构建?nginx时启用调试支持的并检查调试日志。它应该包含有关连接及其失败原因的所有详细信息。所有相关消息都包含“quic“ 字首,可以很容易筛选出来。为了进行更深入的排查,可以启用额外的调试 使用以下宏:
NGX_QUIC_DEBUG_PACKETS, NGX_QUIC_DEBUG_FRAMES, NGX_QUIC_DEBUG_ALLOC, NGX_QUIC_DEBUG_CRYPTO.
./configure
--with-http_v3_module
--with-debug
--with-cc-opt="-DNGX_QUIC_DEBUG_PACKETS -DNGX_QUIC_DEBUG_CRYPTO"
猜你喜欢
- 2024-10-15 这篇文章教你看明白 nginx-ingress 控制器
- 2024-10-03 CentOS 7.5 编译安装 Nginx 1.15.3
- 2024-10-03 如何在kubernetes1.12.1 上部署Ingress-nginx
- 2024-10-03 Nginx专题(1):Nginx之反向代理及配置
- 2024-10-03 你的编程能力为什么没有精进 - 1(以nginx为例)
- 2024-10-03 Zabbix4.0企业级搭建实战(1)LNMP之Nginx服务器编译安装
- 2024-10-03 nginx 1.19.5 主线版发布(nginx/1.19.2)
- 2024-10-03 nginxWebUI 1.2.9 发布,nginx 图形化管理工具
- 2024-10-03 在 Ubuntu 或 Debian 系统上安装以及配置 nginx-1.20.1.tar.gz
- 2024-10-03 「开源资讯」nginxWebUI 1.1.7 发布,nginx 可视化网页配置工具
你 发表评论:
欢迎- 最近发表
-
- 阿里P8大佬总结的Nacos入门笔记,从安装到进阶小白也能轻松学会
- Linux环境下,Jmeter压力测试的搭建及报错解决方法
- Java 在Word中合并单元格时删除重复值
- 解压缩软件哪个好用?4款大多数人常用的软件~
- Hadoop高可用集群搭建及API调用(hadoop3高可用)
- lombok注解@Data没有toString和getter、setter问题
- Apache Felix介绍(apache fineract)
- Spring Boot官方推荐的Docker镜像编译方式-分层jar包
- Gradle 使用手册(gradle详细教程)
- 字节二面:为什么SpringBoot的 jar可以直接运行?
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)