自建Flask API通过Cloudflare Tunnel访问时TLS连接失败求助
解决Cloudflare隧道访问Flask API的TLS连接错误
核心问题排查与修复步骤
修正Cloudflare隧道的服务类型配置
进入Cloudflare Zero Trust门户的隧道路由规则页面,确认服务类型选中HTTP而非HTTPS。你的Flask API仅监听HTTP的5000端口,若隧道以HTTPS方式转发请求,Flask无法处理TLS握手,直接导致连接断开。正确配置应为:服务类型选HTTP,目标URL填写http://xxx.xxx.xxx.xxx:5000,若容器存在网络隔离问题,可替换为主机内部域名host.docker.internal。调整Cloudflared容器的网络模式
若Cloudflared使用默认桥接网络,可能无法直接访问主机的5000端口。将容器网络模式改为host,让容器直接接入主机网络:docker run --network host cloudflare/cloudflared tunnel run --token YOUR_TUNNEL_TOKEN或在docker-compose.yml中配置:
services: cloudflared: image: cloudflare/cloudflared network_mode: host command: tunnel run --token YOUR_TUNNEL_TOKEN确保Flask API监听所有网络接口
检查Flask启动配置,避免仅监听localhost(127.0.0.1),否则容器或隧道无法访问。启动命令改为:flask run --host=0.0.0.0 --port=5000或在代码中设置:
if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)验证本地API可用性
在主机执行curl http://xxx.xxx.xxx.xxx:5000/your-api-path,确认Flask API能正常响应,排除API本身的故障。检查隧道活跃状态
回到Cloudflare Zero Trust门户的隧道页面,确认隧道处于活跃状态。若状态异常,重启Cloudflared容器即可。
内容的提问来源于stack exchange,提问作者Andy Davenport
相关产品推荐
相关产品推荐

