You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cloudflare Tunnel无法连接本地HTTP API:超时及301重定向问题求助

解决Cloudflare Tunnel访问本地API超时及301重定向问题

问题概述

本地Docker部署的Genai-stack API(端口8504)可通过localhost:8504或内部IP172.20.121.5:8504正常返回流式响应,但通过Cloudflare Tunnel关联的公网域名api.example.com访问时,出现重复301重定向,且Cloudflare Tunnel容器日志显示:

ERR  error="Unable to reach the origin service. The service may be down or it may not be responding to traffic from cloudflared: dial tcp 172.20.121.5:8504: i/o timeout"

环境配置

  • 本地API:Docker部署的Genai-stack,可通过http://localhost:8504或http://172.20.121.5:8504访问
  • Cloudflare Tunnel:Docker Compose部署的服务,与API同属tunnel Docker网络
  • 域名配置:通过Cloudflare Tunnel暴露为https://api.example.com,隧道状态正常,Origin配置指向http://172.20.121.5:8504

已完成排查步骤

  • 验证本地API通过localhost及Docker内部IP可正常访问
  • curl本地请求均返回预期流式响应
  • 应用已设置Access-Control-Allow-Origin: *
  • 关闭Cloudflare自动HTTPS重写及强制HTTPS选项
  • 尝试携带Cloudflare服务令牌访问

解决方案

1. 修正Docker网络连通性

尽管两者同属tunnel网络,固定IP可能因容器重启变动,优先用容器名替代:

  • 替换Origin配置为容器名:将Cloudflare Tunnel的Origin地址从http://172.20.121.5:8504改为http://<api-container-name>:8504(例如API容器名为genai-stack-api,则写http://genai-stack-api:8504),Docker同一网络下可通过容器名直接解析。
  • 测试容器间连通性:进入Cloudflare Tunnel容器内部,执行curl http://<api-container-name>:8504,确认是否能正常获取响应。若失败,重建tunnel网络:
    docker network rm tunnel
    docker network create --driver bridge --attachable tunnel
    

2. 排查API自身的HTTPS重定向

即使关闭Cloudflare的HTTPS重写,API可能自带强制重定向规则:

  • 执行curl -v http://172.20.121.5:8504,查看响应头是否包含Location: https://...。若存在,修改Genai-stack的配置,禁用自动HTTPS重定向,或在Cloudflare Tunnel的Origin配置中指定https协议(需确保API容器已配置有效证书)。

3. 调整Cloudflare Tunnel超时参数

流式响应需要更长的超时时间,在Docker Compose中添加相关配置:

services:
  cloudflared:
    image: cloudflare/cloudflared:latest
    command: ["tunnel", "run", "--origin-request-timeout", "300s", "--connect-timeout", "10s"]
    environment:
      - TUNNEL_TOKEN=<你的隧道令牌>
    networks:
      - tunnel
  • --origin-request-timeout:设置Origin请求的超时时间,适配流式响应
  • --connect-timeout:设置与Origin的连接超时时间

4. 检查Origin配置细节

  • 确认Origin地址没有多余的路径后缀(例如误写为http://172.20.121.5:8504/),避免API返回301重定向到根路径。
  • 在Cloudflare隧道路由配置中添加Host请求头,设置为172.20.121.5:8504或localhost:8504,确保API能正确识别请求来源。

总结

核心问题大概率是Docker网络的容器连通性(固定IP失效)或API自身的HTTPS重定向导致。优先使用容器名替代固定IP访问Origin,再排查API的重定向规则,最后调整超时参数适配流式响应。

内容的提问来源于stack exchange,提问作者Steven Low

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 21:13:10