✅ 核心思路
流量走向如下:
用户访问 (https://app.你的域名.com) $\rightarrow$ Cloudflare 边缘节点 $\rightarrow$ 加密隧道 $\rightarrow$ 家中 Linux 主机 (cloudflared) $\rightarrow$ 本地端口 (localhost:端口)
🛠️ 准备工作
-
域名: 必须有一个托管在 Cloudflare 上的域名(将 NS 记录指向 Cloudflare)。
-
账号: 开通 Cloudflare Zero Trust(免费版即够用,需要绑定一张信用卡或 PayPal 用于验证,不会扣费)。
-
环境: 你的 Linux 主机已安装 1Panel,且应用(如 MaxKB、DataEase)已启动并能通过
内网IP:端口访问。
🚀 详细步骤 (使用 Zero Trust 面板图形化配置)
我推荐使用 Cloudflare Zero Trust Dashboard 进行配置,这比在 Linux 敲命令行改 YAML 配置文件要简单直观得多。
第一步:创建隧道 (Create Tunnel)
-
在左侧菜单点击 Networks -> Tunnels。
-
点击 Create a tunnel。
-
Select connector: 选择 Cloudflared,点击 Next。
-
Name your tunnel: 给隧道起个名字,例如
home-server,点击 Save tunnel。
第二步:在 Linux 主机安装连接器
-
在 Cloudflare 页面上,你会看到 "Install and run a connector" 的界面。
-
选择你的操作系统环境(通常是 Linux -> Debian/Ubuntu 或 CentOS/RedHat,根据你 1Panel 宿主机的系统选择)。
-
页面下方会生成一串 以
sudo cloudflared service install...开头的命令。 -
复制这行命令,粘贴到你 Linux 主机的 SSH 终端中执行。
-
执行完毕后,Cloudflare 网页底部的 Connectors 状态应该会很快变成 Connected(绿色)。点击 Next。
第三步:配置公网主机名 (Public Hostname)
这一步是将你的域名映射到 1Panel 里的具体应用端口。
假设你想把 MaxKB 暴露出去,MaxKB 在 1Panel 里显示的本地端口是 8082。
-
进入 Public Hostnames 标签页,点击 Add a public hostname。
-
Subdomain (子域名): 输入你想使用的前缀,例如
ai。 -
Domain (域名): 选择你的主域名,例如
example.com。<ul> <li> <p>结果:<code>ai.example.com</code></p> </li> </ul> </li> <li> <p><strong>Service (服务配置):</strong></p> <ul> <li> <p><strong>Type:</strong> 选择 <strong>HTTP</strong> (注意:即使外网是HTTPS,这里通常选 HTTP,因为隧道内部到本地应用通常是明文 HTTP)。</p> </li> <li> <p><strong>URL:</strong> 输入 <code>localhost:8082</code> (将 <code>8082</code> 替换为你 1Panel 中具体应用的端口)。</p> </li> </ul> </li> <li> <p>点击 <strong>Save hostname</strong>。</p> </li>
🎉 完成! 现在你在外网访问 https://ai.example.com,Cloudflare 就会自动通过隧道连接到你家里电脑的 8082 端口。
🧩 进阶:如何结合 1Panel 的反向代理 (OpenResty)
1Panel 本身有一个强大的 OpenResty (Nginx) 反向代理功能。你是应该直接把隧道指向 应用端口,还是指向 1Panel 的 OpenResty 呢?
方案 A:隧道直连应用 (简单,推荐)
-
配置: Cloudflare Tunnel (Host:
ai.example.com) $\rightarrow$localhost:8082(MaxKB 容器端口)。 -
优点: 简单粗暴,无需在 1Panel 里再配置“反向代理”网站。
-
缺点: 每一个应用都要去 Cloudflare 后台加一条 Public Hostname 记录。
宝塔/1Panel 用户的常见问题:重定向循环
如果你使用 1Panel 的 OpenResty 建立了网站(例如绑定了域名),并且开启了 强制 HTTPS,通过 Tunnel 访问时可能会出现 "Too many redirects" 错误。
-
解决方法: 在 Cloudflare Tunnel 的 Service 配置中,Type 选 HTTP,URL 填
localhost:端口,不要让 Cloudflare 去连接 1Panel 那个开了 HTTPS 的端口。让 Cloudflare 处理外网的 HTTPS,隧道内部走 HTTP 即可。
- 上一篇: 关于NAT服务器通过中继VPS的反向代理方式
- 下一篇: 没有了