如何在同一服务器创建多个绑定不同域名的Cloudflare Argo Tunnel?
解决Cloudflare Argo Tunnel多域名指向单服务器的问题
嘿,我来帮你搞定这个问题——你完全没必要创建多个隧道或者反复删除证书!Cloudflare Argo Tunnel支持在单条隧道下挂载多个域名,而且证书会自动管理,根本不用你手动折腾服务器上的证书。下面是两种可行的操作方法:
方法一:通过Cloudflare Dashboard可视化添加多域名
- 登录你的Cloudflare账户,进入Zero Trust面板,找到你已经创建好的Argo Tunnel。
- 在隧道详情页面,切换到Public Hostnames选项卡。
- 点击Add a public hostname,逐个添加你的域名(比如
abc.com、xyz.com、qrs.com,子域名也可以):- 选择对应的Cloudflare域名(确保你的域名已经托管在Cloudflare,NS记录已切换)
- 输入主机名(比如直接填
abc.com或者带www的www.abc.com) - 设置服务地址:对应你服务器上的服务地址,比如
http://localhost:80或者https://localhost:443(根据你的实际服务配置来) - 点击Save hostname,重复此操作添加所有需要的域名。
- 完成后,Cloudflare会自动为这些域名签发SSL证书,所有域名都会通过这条隧道指向你的服务器——全程不需要你在服务器上安装任何域名证书,
cloudflared客户端会自动处理加密通信。
方法二:用配置文件批量管理多域名(适合大量域名场景)
如果你的域名数量较多,用配置文件会更高效:
- 在服务器上创建一个YAML配置文件,比如命名为
tunnel-config.yml,内容如下:
tunnel: <你的隧道ID> credentials-file: /root/.cloudflared/<你的隧道凭证文件名>.json ingress: - hostname: abc.com service: http://localhost:80 - hostname: xyz.com service: http://localhost:80 - hostname: qrs.com service: http://localhost:80 # 必须添加兜底规则,否则隧道无法正常运行 - service: http_status:404
- 替换
<你的隧道ID>和<你的隧道凭证文件名>为实际信息:隧道ID可以在Cloudflare Dashboard的隧道详情页找到,凭证文件是你创建隧道时下载的JSON文件。 - 停止之前运行的
cloudflared进程,然后用配置文件启动隧道:
cloudflared tunnel run --config tunnel-config.yml
- 同样,Cloudflare会自动为所有配置的域名签发证书,所有流量都会通过这条加密隧道转发到你的服务器,完全不会暴露服务器IP。
几个关键注意点
- 确保所有域名都已经托管在你的Cloudflare账户下,并且DNS解析已经切换到Cloudflare的NS服务器(这是Argo Tunnel生效的前提)。
- 服务器上不需要安装任何域名证书,
cloudflared会和Cloudflare边缘节点建立加密隧道,用户的请求先到Cloudflare边缘,再通过隧道转到你的服务器,全程加密。 - 如果需要不同域名指向服务器上的不同服务,只需要修改配置文件里的
service字段即可,比如abc.com指向http://localhost:8080,xyz.com指向http://localhost:8081。
这样操作后,你就能用单条Argo Tunnel实现多域名指向同一服务器,同时完美隐藏你的服务器IP啦!
内容的提问来源于stack exchange,提问作者inayatu
相关产品推荐
相关产品推荐

