Nginx QUIC 模块安装及使用指南
nginx_quic_module项目地址:https://gitcode.com/gh_mirrors/ng/nginx_quic_module
项目介绍
Nginx QUIC 模块是由 Bilibili 视频云团队(BVC)开发的一个基于 Nginx 的附加模块,旨在让 Nginx 能够支持 QUIC 协议作为网络传输层。QUIC 是一种由 Google 设计并推动的新型传输协议,相比传统的 TCP 协议,它可以显著降低延迟,提供更流畅的网络体验。
特性:
- 支持所有 QUIC 协议的特点,如 0RTT 连接建立以及改进的拥塞控制。
- 简单配置即可开启 QUIC 服务器。
- 高性能表现。
此模块依赖于一个单独的库 libngxquicstack.so
,该库需要从另一个仓库 ngx_quic_stack
中构建。更多细节参考其文档。
项目快速启动
准备工作
在编译前,确保已经构建了 ngx_quic_stack
并将 libngxquicstack.so
安装到系统库路径中。
动态加载模块
假设您的 Nginx 源码目录为 /path/to/nginx-sources
:
cd /path/to/nginx-sources/
/path/to/nginx-sources/configure --add-dynamic-module=/path/to/nginx_quic_module
make
make install
使用动态加载模块方式时,在 Nginx 启动时需要指定模块位置:
load_module /path/to/modules/ngx_quic_module.so;
静态编译模块
如果选择静态编译模块,则使用以下命令:
cd /path/to/nginx-sources/
/path/to/nginx-sources/configure --add-module=/path/to/nginx_quic_module
make
make install
记得在编译前调整 ngx_modules.c
文件中的模块顺序,确保 QUIC 模块位于事件模块之后。
应用案例和最佳实践
示例配置
示例 Nginx 配置文件 nginx.conf
如下所示:
quic {
quic_stack stack1 {
quic_listen 443;
quic_max_streams_per_connection 88;
quic_initial_idle_timeout_in_sec 10;
quic_default_idle_timeout_in_sec 60;
quic_max_idle_timeout_in_sec 600;
quic_max_time_before_crypto_handshake_in_sec 20;
quic_session_buffer_size 1M;
quic_max_age 600;
}
}
http {
server {
listen 80;
server_name test.domain.com;
root /root;
location / {
index index.html index.htm;
try_files $uri $uri/ =404;
}
}
server {
listen 443 ssl;
ssl_certificate /path/to/server.crt;
ssl_certificate_key /path/to/server.key;
server_name test.domain.com;
# QUIC 配置
enable_quic stack1;
root /root;
# 缓存位置
location /cache {
...
}
# 反向代理位置
location /proxy {
proxy_pass http://127.0.0.1/;
}
}
}
典型生态项目
这个模块可以被广泛应用于多种场景中,包括但不限于 CDN 分发网络、实时通信服务(RTC)、在线视频流媒体等。它的引入能够帮助减少延迟,提升用户体验,尤其是在高带宽低延迟的网络环境下。
请注意,目前该模块仅在 Linux 上受支持,内核版本要求至少是 4.8 或以上。建议配合最新版的 Tengine (>=2.3.2)进行测试和部署。
nginx_quic_module项目地址:https://gitcode.com/gh_mirrors/ng/nginx_quic_module