快速隧道(临时地址)
不想注册域名、手头也没有凭据时,可以让模块自己申请一条临时隧道,拿到一个 https://<随机单词>.trycloudflare.com 的地址。这就是 cloudflared cloudflared tunnel --url 的 quick tunnel 模式。
nginx
http {
cfd_tunnel_quick_tunnel on; # 开关(开了就不用凭据)
# cfd_tunnel_quick_service https://api.trycloudflare.com; # 可选,默认即此
# cfd_tunnel_quick_timeout 15000; # 可选,默认 15s
cfd_tunnel_inject_listen 127.0.0.1:8090;
server {
listen 127.0.0.1:8090;
# 随机域名,只能靠默认 server 兜住
location / {
proxy_pass http://127.0.0.1:3000;
}
}
}启动后模块会 POST https://api.trycloudflare.com/tunnel 申请隧道,把拿到的凭据当普通凭据用, 并把地址写进 error_log:
text
cfd_tunnel: 快速隧道临时地址(重启即变)https://random-words-here.trycloudflare.com查地址
bash
cfd-quick-url # 最新一条
cfd-quick-url -n 3 # 最近 3 条
cfd-quick-url -a # 全部
cfd-quick-url -q # 只输出 URL(便于 $(...) 取值)不想用命令也可以 grep(日志行的形状是固定的):
bash
grep -o '快速隧道临时地址(重启即变)https://[^ ]*' /var/log/nginx/error.log | tail -1边界:这个模式只是临时用
| 事实 | 说明 |
|---|---|
| 只有 0 号 worker 建这条隧道 | cloudflared 对 quick tunnel 固定 HaConnections=1,模块照抄 |
| 重启就会换地址 | 每次启动重新申请,随机域名不可保留 |
| 不重试 | 申请失败就放弃(cloudflared 同样只申请一次),error_log 有原因 |
| 只走 HTTP/2 | provisioning 与服务端必须协商 ALPN=h2,没协商到就明确失败,不做 h1.1 回退 |
不做 OTP / --allowed-mail 保护 | cloudflared 的 quicktunnelauth 子系统未实现 |
| 代理只作用于这一段 | provisioning 认 HTTPS_PROXY 等标准环境变量(项目扩展:cloudflared 的 http.Transport 里 Proxy == nil,它不读);连边缘仍然直连,见 TLS 与代理。走代理时日志会写明「经代理 …」,绝不静默 |
与多隧道一起用
快速隧道也能写成块:
nginx
cfd_tunnel {
name demo-1;
quick on;
inject_listen 127.0.0.1:8090;
}多条快速隧道可以让不同域名落到不同端口;也可以两条指向同一个端口(注入期间改监听器标志位是 同步的,并发安全),但请求会落到该 listen 的默认 server。
记忆点
cfd_tunnel_quick_tunnel 与 cfd_tunnel_credentials(以及 token / token_file)互斥 —— 同时配 nginx -t 直接失败。这是有意的:一个「到底连哪条隧道」的问题不该靠优先级猜。