安装
目标环境
| 项 | 值 |
|---|---|
| 系统 | Debian 13(trixie) |
| nginx | 1.26.3(Debian 官方包,--with-compat) |
| 运行时依赖 | libnghttp2-14、zlib1g、libc6 (>= 2.34) |
| ABI 依赖 | nginx-abi-1.26.3-1 | nginx (>= 1.26.3) |
| 编译期依赖 | libnghttp2-dev(头文件)、libssl-dev、zlib1g-dev、pcre2-dev |
模块只在 HTTP/2 到边缘这条链路上用 nghttp2;TLS 用的是 nginx 自己的 OpenSSL, 所以 ssl_protocols / ssl_ciphers / 证书配置照旧由 nginx 决定。
从 .deb 安装(推荐)
bash
sudo dpkg -i libnginx-mod-http-cfd-tunnel_0.14.0-1_amd64.deb包按 Debian 官方模块包的习惯铺开:
| 路径 | 内容 |
|---|---|
/usr/lib/nginx/modules/ngx_http_cfd_tunnel_module.so | 模块本体 |
/usr/share/nginx/modules-available/mod-cfd-tunnel.conf | load_module modules/...; 片段(相对路径,与官方模块包同形) |
/etc/nginx/modules-enabled/50-mod-cfd-tunnel.conf | 指向上面的符号链接(启用) |
/usr/share/doc/libnginx-mod-http-cfd-tunnel/README.md | 运维向说明(含本版变更) |
/usr/share/doc/libnginx-mod-http-cfd-tunnel/TECHNICAL.md | 完整技术文档(随包交付) |
/usr/bin/cfd-quick-url | 从 error_log 里查快速隧道临时地址 |
nginx.conf 里只要有 include /etc/nginx/modules-enabled/*.conf;,模块就自动加载; 不想加载就删掉那个符号链接。
装完必须 restart,不是 reload
load_module 发生在配置解析之前,nginx -s reload 不会重新加载动态模块。
bash
sudo nginx -t && sudo systemctl restart nginx从源码构建
所有工具链都在工作区的 env/ 下(source env/activate.sh 后才会有 gcc / go / make), 不碰系统 apt:
bash
cd /root/DSH/nginx-cfd
source env/activate.sh
NGX_MODULES_ONLY=1 ./build/nginx-build.sh # 只重新 configure + 编模块
make -C nginx-src/nginx-1.26.3 modules # 只重编模块(秒级)
install -m 0755 nginx-src/nginx-1.26.3/objs/ngx_http_cfd_tunnel_module.so \
build/prefix/modules/- 首次全量构建用
./build/nginx-build.sh(复刻 Debian 官方参数,含--with-compat)。 - 自洽构建验证用
./build/clone-build.sh:只用git archive HEAD出来的副本独立编一遍, 并与交付.so(去调试信息后)逐字节比对。
打包成 .deb
bash
mkdir -p .scratch/tmp && export TMPDIR=$PWD/.scratch/tmp # dpkg-deb 需要可写临时目录
./build/make-deb.sh 0.14.0-1
./build/fingerprints.sh --write && ./build/fingerprints.sh --check # 记指纹并逐项对账
./build/package-check.sh # 包内容 / 依赖 / ABI 自检随包文档是「先定稿、后打包」的一趟流程:包体积、Installed-Size 这类自指数字一律不写进 随包文档,只留「从哪里取」(build/fingerprints.env、dpkg-deb -f)。
装完先确认模块真的加载了
bash
nginx -V 2>&1 | grep -o 'ngx_http_cfd_tunnel_module' || echo '未加载'
ls -l /etc/nginx/modules-enabled/50-mod-cfd-tunnel.conf
nginx -tnginx -t 通过只说明配置语法对 —— token 的真实性要到 worker 启动时才校验 (与 cloudflared 一致),见 凭据。