@
jlak #6 你的服务器上跑什么服务?如果是一般的网站( HTTP/HTTPS ),那么用 Cloudflare ZeroTrust 的 Tunnel (就是 4 楼梯道的 tunnel ),要点如下:
0. 假设你服务器上的一个 Web 程序,比方说 Nginx ,监听服务器的 127.0.0.1:80 端口
1. 在 Cloudflare Zero Trust 的面板 - Access - Tunnels 中设置 Tunnel ,跟着向导和文档来,它会让你在服务器上安装一个 cloudflared 程序( connector ),一般是用 systemd 管理的。安装并认证好了之后,相当于你服务器上就有一个长期运行的 Cloudflare connector 一直主动保持与 Cloudflare 的通信(由于是这个通信是主动出站,不需要你服务器防火墙开放任何入站规则)。
2. 然后,回到 Cloudflare 网页版的 Tunnel 设置页面,设置「 Public Hostname 」,基本上就是设置一个域名到 IP:端口的映射,例如你设置
a.yourdomain.com -> 127.0.0.1:80
那么大致效果就是(下面的用词可能不专业,领会下精神😂):
a.
a.yourdomain.com 解析出来是 Cloudflare 的地址
b. 当有人访问
a.yourdomain.com 时,Cloudflare 发现这是一个 Tunnel 里面配置的 Hostname ,于是将请求导向对应的 connector 所在机器的 127.0.0.1:80 ,正好就是你服务器上 Nginx 监听的那个端口
====
以上就实现了你服务器防火墙不开放任何入站端口(自己用于 SSH 啥的除外),但能通过 Cloudflare Tunnel 正常对外开放网页服务。