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

通过Cloudflare Tunnel实现容器Nginx代理遇阻求助

问题解决方案

一、Cloudflared配置文件与容器启动错误修复

1. 原生Cloudflared配置文件位置(非Docker环境)

若直接在主机安装cloudflared,默认配置文件路径为:

~/.cloudflared/config.yml

但你使用Docker部署cloudflared,需重点关注容器内的路径映射。

2. Docker Run命令修正

你之前的命令错误在于容器无法直接访问主机本地路径,需通过卷挂载将主机的配置文件目录映射到容器内。步骤如下:

  1. 在主机创建cloudflared配置目录并放入config.yml:
    mkdir -p ~/cloudflared
    # 将你的config.yml放入这个目录
    
  2. 使用修正后的命令启动容器:
    docker run -d \
      --name cloudflared \
      --restart unless-stopped \
      -v ~/cloudflared:/home/nonroot/.cloudflared \
      cloudflare/cloudflared:latest \
      tunnel --config /home/nonroot/.cloudflared/config.yml --no-autoupdate run --token "你的隧道token"
    
    关键说明:--config指定的是容器内的路径(/home/nonroot/.cloudflared/config.yml),而非主机路径,容器只能访问挂载进来的目录。

3. Docker Compose配置修正

你的Compose存在两个问题:配置文件路径指向错误、环境变量多余引号。修正后的配置如下:

version: "3.8"
services:
  cloudflared:
    image: cloudflare/cloudflared:latest
    container_name: cloudflared
    restart: unless-stopped
    command: tunnel --config /home/nonroot/.cloudflared/config.yml --no-autoupdate run
    environment:
      - TUNNEL_TOKEN=你的隧道token
    volumes:
      - ./data:/home/nonroot/.cloudflared/

操作步骤:

  1. 在Compose文件所在目录创建data文件夹,将config.yml放入其中。
  2. 执行docker-compose up -d启动容器。

额外配置注意事项

  • config.yml中的service地址:若Nginx Proxy Manager与cloudflared在同一Docker网络,建议使用容器名或Docker内部IP(如https://npm:443),比宿主机IP更稳定。
  • originRequest.noTLSVerify: true必须保留,因为Nginx Proxy Manager默认使用自签证书,cloudflared会验证失败。

二、单Nginx对接多台Docker主机的可行性

完全可以用一台Nginx Proxy Manager对接3台不同的Docker主机,无需每台VM单独部署。实现要点:

  • 确保Nginx所在主机能访问到其他三台主机的内网IP(同一局域网或VPN打通网络)。
  • 在Nginx Proxy Manager中添加域名配置,将每个域名指向对应Docker主机上服务的内网端口(比如其他主机上的Nextcloud容器端口为8080,就配置域名指向http://其他主机IP:8080)。
  • 其他主机的服务无需开放公网端口,仅需允许Nginx所在主机访问其内网端口即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 00:28:14