Nginx 1.25.0发布,开启HTTP时代的魔盒3
![]()
近日,Nginx发布了大版本1.25.0。该版本引入了对QUIC和HTTP/3协议的支持,Nginx正式进入HTTP/3时代。从 1.25.0 开始,Linux 二进制包中启用了 QUIC 和 HTTP/3。
QUIC 和 HTTP/3 支持是实验性的,需要用户自行决定。
从源代码生成
HTTP/3 支持 ngx_http_v3_module 提供特殊支持。对于源代码的编译版本,用户必须自行启用模块:
--z-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 编译安装。监听指令
Configuration
中的 ngx_http_core_module 模块有一个新参数,可在指定端口上启用基于 QUIC 的 HTTP/3。还可以指定
quic 参数以重用端口参数,以便与多个工作程序正常工作。有关指令列表,请参阅 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_PACKET S-DNGX_QUIC_DEBUG_CRYPTO" 版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网