Skip to content

cloudflared (域名)穿透

如果没有公网ip,或者服务器没有备案的情况下,可以使用 cloudflared 提供的穿透服务,速度凑合用,但是国内延迟可能爆炸。

cloudflared配置

  • SSL/TLS 使用 完全 模式

    • 不要使用 完全(严格)

使用方法

1 下载安装。

cloudflared-windows-amd64.msi

2 认证:

cmd
 cloudflared tunnel login

授权成功后,你的本地电脑会生成一个名为 cert.pem 的文件。

Windows 路径: C:\Users\<你的用户名>\.cloudflared\cert.pem

Mac/Linux 路径: ~/.cloudflared/cert.pem

将文件传输到服务器

然后测试是否登录 cloudflared tunnel list

3 创建隧道

  1. 创建:

    cloudflared tunnel create my-server

  2. 配置路由:

    cloudflared tunnel route dns my-server reinffy.cc

  3. 运行:

    cloudflared tunnel run --url http://127.0.0.1:8080 my-server

示例 测试成功 创建隧道 reinffy-tunnel

1创建:

cmd
cloudflared tunnel create reinffy-tunnel

运行后会生成一个 JSON 凭证文件,并在终端显示一个 ID(例如:12345678-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。

2配置路由:

cmd
# 绑定主域名
cloudflared tunnel route dns reinffy-tunnel reinffy.cc
# 绑定子域名
cloudflared tunnel route dns reinffy-tunnel openlist.reinffy.cc

3运行:

cmd
cloudflared tunnel run --url http://127.0.0.1:19000 reinffy-tunnel

原理:cloudflared 默认会透传 Host 头部(域名信息)。当请求到达 Nginx 时,Nginx 会看到域名是 reinffy.cc 还是 openlist.reinffy.cc,并自动匹配对应的 server 块。

示例 配置文件 config.yml

先确认创建隧道

cloudflared tunnel create reinffy-tunnel

yaml
tunnel: xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
credentials-file: C:\Users\Administrator\.cloudflared\xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.json

ingress:
  - hostname: reinffy.cc
    service: http://127.0.0.1:19000
  - hostname: openlist.reinffy.cc
    service: http://127.0.0.1:19000
  # 最后必须加一个 443 兜底规则(Tunnel 要求)
  - service: http_status:404

使用指定配置运行

cmd
cloudflared tunnel --config C:\Users\Administrator\.cloudflared\config.yml run