SSH-Tunnel

到Cloudflare账户主页,访问 联网 -> Tunnels ,创建一个tunnel,然后按照提示,配置安装服务端cloudflared:

Cloudflare Tunnel 设置环境与安装 cloudflared 命令页面

最后等待连接成功后,创建完成。

路由

进入该tunnel后,选择给这个tunnel添加路由,选择已发布的应用程序,如图配置即可:

Cloudflare Tunnel 配置已发布的 SSH 应用程序路由

需自行修改ssh端口、主机名,最后就是配置ssh客户端的配置(以Windows为例):

# 安装cloudflared
scoop install cloudflared
# 配置~/.ssh/config
vim ~/.ssh/config

配置如下字段:

Host ssh-tunnel
    HostName ssh.srprolin.com
    User root
    ProxyCommand cloudflared access ssh --hostname %h

最重要的就是ProxyCommand ,配置完成后可以通过ssh ssh-tunnel进行VPS连接。

Nginx-Tunnel与优选

还有一种常见场景就是Nginx等反向代理应用程序,可以非常简单的运行在http://127.0.0.1:80端口上,这种情况下是不需要客户端也用cloudflared的,但如果仅仅如此就是照葫芦画瓢了,接下来要说明一下cloudflare的优选。 优选操作简单来说都可以分成三部分:

  • cloudflare服务本身:最初接入cloudflare的应用
  • 解析层:一般用来指向优选域名/IP
  • 规则层:当流量打到cloudflare时将主机名转发到应用 首先在DNS解析处,设置一条CNAME:cdn.example.com-><优选域名>

Saas自定义主机名

首先到DNS处设置一个经过CDN的fake-ip解析,比如saas.example.com->192.0.2.1; 然后到SSL/TLS->自定义主机名,填入回退源saas.example.com;

记得将SSL/TLS边缘证书加密方式配置为灵活;

Tunnel优选路由创建

首先创建一个路由vps-nginx.example.com->http://127.0.0.1:80,这就是cloudflare本体应用; 再创建一个路由nginx.example.com->http://127.0.0.1:80,这就是解析层,也是CDN层; 然后回到DNS处,删除自动创建的nginx记录,改成仅DNS的CNAME指向cdn.example.com; 再通过自定义主机名创建规则层:

Cloudflare SSL/TLS 添加自定义主机名与源服务器规则

随后便可通过nginx.example.com进行优选域名的访问。