Cloudflare Tunnel 暴露本地网站

背景:WSL下安装的WordPress网站使用域名www.test.com,通过hosts配置DNS,映射到本地127.0.0.1;Cloudflare里买的域名是dian.com。

1. 安装 cloudflared

在 WSL 里:

wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb

2. 登录 Cloudflare

cloudflared tunnel login

会弹出一个链接,在浏览器里选择你的 Cloudflare 账号和域名。

授权成功后,会在用户目录下生成授权证书文件:/root/.cloudflared/cert.pem


3. 创建隧道

cloudflared tunnel create wsl-wordpress

它会输出一个隧道 ID,同时在 ~/.cloudflared/ 下生成一个配置文件(json 格式)

vi ~/.cloudflared/config.yml

内容

tunnel: wsl-wordpress
credentials-file: /root/.cloudflared/a88f8479-2ebd-4b67-9b16-3f0a0bd8e7ac.json

ingress:
  - hostname: wp.dian.com
    service: http://localhost:80
  - service: http_status:404

注意:

  • hostname: wp.dian.com → 你要映射的公网域名(可以自定义一个二级域名,比如 wp.dian.com
  • service: http://localhost:80 → 这里写你 WSL WordPress 的监听端口(如果是 127.0.0.1:8000 就写 http://localhost:8000

配置 Cloudflare DNS

4. 给域名添加隧道 DNS 解析

cloudflared tunnel route dns wsl-wordpress wp.dian.com

Cloudflare 的 DNS 面板会自动添加一条 CNAME 记录:wp.dian.com CNAME <随机隧道ID>.cfargotunnel.com 。

执行:
root@LG:~/packages# cloudflared tunnel route dns wsl-wordpress wp.dian.com
2025-09-16T07:11:57Z INF Added CNAME wp.dian.com which will route to this tunnel tunnelID=a88f8479-2ebd-4b67-9b16-3f0a0bd8e7ac

这样Cloudflare后台会有一条DNS记录: wp.dian.com -> a88f8479-2ebd-4b67-9b16-3f0a0bd8e7ac.cfargotunnel.com

这样全世界访问 wp.dian.com 时,会被转到你的本地服务。

5. 运行隧道

假设 WSL 里的 WordPress 在 http://localhost:8000

cloudflared tunnel run wsl-wordpress

现在访问 https://wp.dian.com 就会直接连到你本地的 WordPress。


6. 修改 WordPress 配置

WordPress 本地之前用的是 www.dian.com,现在要切换到 https://wp.g9home.com,不然登录、跳转会出错。

修改方法:

UPDATE wp_options 
SET option_value = 'https://wp.dian.com'
WHERE option_name IN ('siteurl','home');

以后如果你想要用 自定义子域名(比如 pay.dian.com),只要在 config.ymlhostname 里改一下,再跑一遍 cloudflared tunnel route dns 即可。

www.test.com 只能本地用,外部(WordPress.com)无法访问,所以必须用 Cloudflare 真实托管的域名来跑 WooPayments 授权。

Scroll to Top