在ServBay中使用cloudflared配置Cloudflare Tunnel反向代理指南
Cloudflare Tunnel(原Argo Tunnel)是Cloudflare提供的零信任反向代理服务,无需开放公网端口即可安全暴露本地服务。本指南将指导您在ServBay环境中通过cloudflared建立安全隧道,实现本地服务的互联网访问。
技术原理
Cloudflare Tunnel通过创建加密的outbound连接(基于QUIC协议),将本地服务安全连接到Cloudflare边缘节点。该方案完全绕过NAT穿透,无需配置防火墙规则,同时集成Cloudflare的DDoS防护和Web应用防火墙(WAF)功能。
环境准备
1. 安装cloudflared客户端
macOS系统(ARM架构):
bash
# 下载二进制文件
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-darwin-amd64.tgz | tar xz
sudo mv cloudflared /usr/local/bin/
1
2
3
2
3
验证安装:
bash
cloudflared --version
# cloudflared version 2024.5.0 (built 2024-05-01)
1
2
2
2. 登录Cloudflare账户
bash
cloudflared tunnel login
1
执行后会自动打开浏览器,选择需要管理的域名完成授权。
隧道配置实战
核心配置流程
- 创建隧道
bash
cloudflared tunnel create servbay-tunnel
# 输出示例:Created tunnel servbay-tunnel with id xxxx-xxxx-xxxx
1
2
2
- 配置DNS记录
bash
cloudflared tunnel route dns servbay-tunnel servbay-tunnel.yourdomain.com
1
- 编写配置文件
创建~/.cloudflared/config.yml
:
yaml
tunnel: <TUNNEL_ID>
credentials-file: /path/to/credentials.json
ingress:
- hostname: servbay-tunnel.yourdomain.com
service: https://servbay.local
originRequest:
noTLSVerify: true # 如需跳过本地证书验证可启用
- service: http_status:404 # 默认回退规则
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
启动隧道服务
bash
cloudflared tunnel run servbay-tunnel
1
服务验证
- 访问配置的域名:
https://servbay-tunnel.yourdomain.com
1
- 验证要点:
- 显示与本地服务一致的内容
- 浏览器地址栏显示Cloudflare签发的有效SSL证书
- 响应头包含
CF-RAY
标识
高级配置技巧
多服务路由
yaml
ingress:
- hostname: api.yourdomain.com
service: https://api.local
- hostname: app.yourdomain.com
service: https://app.local
1
2
3
4
5
2
3
4
5
流量监控
bash
# 查看实时指标
cloudflared tunnel info servbay-tunnel
# 获取详细日志
cloudflared tunnel logs servbay-tunnel
1
2
3
4
5
2
3
4
5
故障排查
现象 | 解决方案 |
---|---|
502 Bad Gateway | 检查本地服务是否运行,隧道配置中的service地址是否正确 |
DNS解析错误 | 确认DNS记录的CNAME指向是否正确(应为<UUID>.cfargotunnel.com ) |
证书验证失败 | 确保config.yml中hostname与证书域名匹配,检查本地证书链是否完整 |
方案优势
通过Cloudflare Tunnel方案,ServBay用户可获得:
- 企业级安全防护:内置DDoS缓解和WAF防护
- 零端口暴露:无需配置防火墙或NAT规则
- 智能路由:通过Cloudflare全球Anycast网络优化访问速度
- 免费额度:免费套餐包含每月50个活跃隧道
建议生产环境配合Access策略实施细粒度访问控制,确保服务安全性。