Cloudflare Tunnel + Nginx Proxy Manager 服务穿透

清夏晚风

更新日期:2026年1月9日

Cloudflare Tunnel + Nginx Proxy Manager 服务穿透

本文介绍如何使用 Cloudflare Tunnel 和 Nginx Proxy Manager 实现内网服务穿透到外网,无需公网 IP,支持自动 SSL 证书申请和续期。

一、Nginx Proxy Manager 介绍

Nginx Proxy Manager 是一个 Nginx 的可视化代理管理器,自带面板,操作极其简单,非常适合配合 Docker 搭建的应用使用。

1.1 Docker 部署配置

创建 docker-compose.yml 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
version: '3.8'
name: proxy
services:
nginx:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
container_name: nginx
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- /data/docker/nginx:/data
- /data/docker/letsencrypt:/etc/letsencrypt
networks:
appnet:
external: true

1.2 配置说明

  • 端口映射

    • 80:HTTP 端口
    • 81:管理面板端口
    • 443:HTTPS 端口
  • 数据卷

    • /data/docker/nginx:Nginx 配置和数据
    • /data/docker/letsencrypt:SSL 证书存储

1.3 使用注意事项

其他需要被 Nginx 反代的服务理论上不需要配置 ports 暴露端口,只需要都加入同一个 docker 网络,在 Nginx 配置时使用域名指向即可。

Nginx Proxy Manager 可以一键申请 SSL 证书,并且会自动续期。

注意:申请证书时,Let’s Encrypt 会访问域名进行校验,所以先通过 Cloudflare 配置可外部访问之后,再进行配置证书。

二、Cloudflare Tunnel 配置

2.1 创建 Tunnel

  1. 进入 Cloudflare 管理面板
  2. 导航到 Zero Trust → Network → Tunnels
  3. 点击「Create a tunnel」
  4. 创建一个 Cloudflared 类型的 Tunnel
  5. 输入 Tunnel 名称
  6. 点击下一步

2.2 获取安装方式

页面将会显示各个平台的安装方式,在这里可以找到 Tunnel 的 token。

2.3 安装 cloudflared

根据指引的安装方式启动连接,连接成功后,页面的 Connectors 将会显示连接的实例。

更多安装指南:https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/

2.4 Docker 启动配置

以下为 Docker 启动案例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
version: '3.0'
name: cloudflare
services:
cloudflared_tunnel:
restart: always
container_name: cloudflare_tunnel
hostname: cloudflare_tunnel
image: cloudflare/cloudflared:latest
command: tunnel --no-autoupdate --metrics=127.0.0.1:3333 run --token xxx
network_mode: host
user: "0:0"
environment:
PUID: 0
PGID: 0
TUNNEL_TRANSPORT_PROTOCOL: http2
dns:
- 1.2.4.8
networks:
appnet:
external: true

配置说明

  • 网络模式:设置成 host

  • Transport 协议:设置成 http2

    • 默认 cloudflared 以 quic 协议建立链接
    • 如果当前网络环境 UDP 链接使用有问题则设置成 http2
  • DNS 配置

    • 如果当前环境的 DNS 无法解析 cloudflare 相关域名(如 clash 的 fake-ip 模式影响)
    • 则可以指定 DNS

三、配置路由

3.1 步骤一:Nginx Proxy Manager 配置

  1. 登录 Nginx Proxy Manager 管理面板(默认端口 81)
  2. 新增一个 Proxy Host
  3. 配置域名信息
  4. Publicly Accessible 不配置 SSL

3.2 步骤二:Cloudflare 配置

  1. 进入 Tunnel 配置页面
  2. 找到对应 Tunnel 点击 Configure 进入 Tunnel 配置
  3. 配置 Public hostnames
  4. 分别填写:
    • 域名(需已经使用 Cloudflare 解析)
    • 转发目标 Service 的 URL
  5. 注意:此时必须先选择 HTTP 协议,因为还未申请成功 SSL

3.3 步骤三:申请 SSL 证书

  1. 回到 Nginx Proxy Manager
  2. 找到对应的 Proxy 配置
  3. 切换到 SSL 选项卡
  4. 选择 Request a new SSL Certification
  5. 选择 Force HTTPS(根据实际情况)
  6. 稍等片刻,证书就申请和配置好了

3.4 步骤四:Cloudflare 配置更新

  1. 进入 Tunnel 配置页面

  2. 找到对应 Public hostname

  3. 点击 Configure

  4. 将 Service 的 Type 切换成 HTTPS

    • 如果不切换且 Nginx 配置了 Force HTTPS,就会无限重定向
  5. 展开 Add Additional application settings → TLS

  6. 在 Origin Server Name 中填入对应反代的域名

    • 否则 Nginx 不能正确转发
  7. 部分域名敏感的应用还需配置 HTTP Settings 的 HTTP Host Header 才能正确识别,根据实际情况配置

四、内网访问速度优化

4.1 问题说明

在内网访问已经配置好映射的域名的时候,也会被解析至 Cloudflare 然后通过 Tunnel 转发,这影响了访问速度。

4.2 解决方案

如果内网是使用类似 Adguard 的解析服务,可以通过重写 DNS,将域名直接指向 Nginx Proxy Manager,减少链路长度,提升访问体验。

其他解析服务如 Clash、dnsmasq,甚至于在路由或者 PC 上配置 hosts 也能达到同样效果。

4.3 配置示例

AdGuard 配置

  1. 进入 AdGuard 设置
  2. 找到 DNS 重写功能
  3. 添加重写规则:
    • 域名:your-domain.com
    • 值:Nginx Proxy Manager 的内网 IP

Clash 配置

在 Clash 配置文件中添加 hosts 规则:

1
2
hosts:
your-domain.com: 192.168.1.100

hosts 文件配置

在系统 hosts 文件中添加:

1
192.168.1.100 your-domain.com

五、常见问题

5.1 SSL 证书申请失败

问题:Let’s Encrypt 无法验证域名

解决方案

  1. 确保域名已通过 Cloudflare 解析
  2. 确保 Cloudflare Tunnel 已正确配置
  3. 检查防火墙是否阻止了 80 和 443 端口
  4. 等待 DNS 解析生效(通常需要几分钟到几小时)

5.2 无限重定向

问题:访问域名时出现无限重定向

解决方案

  1. 检查 Nginx Proxy Manager 是否配置了 Force HTTPS
  2. 检查 Cloudflare Tunnel 的 Service Type 是否已切换为 HTTPS
  3. 检查 Origin Server Name 是否配置正确

5.3 内网访问速度慢

问题:内网访问域名速度很慢

解决方案

  1. 配置 DNS 重写,将域名指向 Nginx Proxy Manager 的内网 IP
  2. 使用 hosts 文件直接解析
  3. 检查网络链路是否有瓶颈

5.4 Tunnel 连接失败

问题:Cloudflare Tunnel 无法连接

解决方案

  1. 检查 token 是否正确
  2. 检查网络连接是否正常
  3. 尝试切换 Transport 协议(quic → http2)
  4. 检查防火墙设置
  • Title: Cloudflare Tunnel + Nginx Proxy Manager 服务穿透
  • Author: 清夏晚风
  • Created at : 2026-01-09 21:44:31
  • Updated at : 2026-01-09 21:58:35
  • Link: https://blog.kimikkorow.eu.org/CloudflareTunnel-WAFNginx/
  • License: This work is licensed under CC BY-NC-SA 4.0.