在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策略實施細粒度訪問控制,確保服務安全性。