You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Cloudflared Tunnel在单台Mac Mini上托管多域名站点遇障求助

Cloudflared Tunnel多域名配置问题解决方法

问题1:单隧道多域名指向错误

排查修复步骤

  1. 校验Cloudflared的config.yml ingress规则
    确保每个域名对应唯一的后端服务路径,示例配置如下:

    tunnel: 你的隧道ID
    credentials-file: /Users/你的用户名/.cloudflared/你的隧道ID.json
    
    ingress:
      - hostname: site1.yourdomain.com
        service: http://localhost:80
      - hostname: site2.yourdomain.com
        service: http://localhost:80/site2
      # 兜底规则,未匹配请求返回404
      - service: http_status:404
    

    注意:每个hostname必须绑定独立的service目标,避免路径冲突。

  2. 检查Apache虚拟主机配置

    • 确保httpd.conf中开启虚拟主机支持:
      # 加载虚拟主机配置文件
      Include etc/extra/httpd-vhosts.conf
      # 启用基于域名的虚拟主机(Apache 2.4+可省略,建议保留)
      NameVirtualHost *:80
      
    • 在httpd-vhosts.conf中为每个域名配置独立虚拟主机:
      <VirtualHost *:80>
          ServerName site1.yourdomain.com
          DocumentRoot "/Applications/XAMPP/htdocs/site1"
          <Directory "/Applications/XAMPP/htdocs/site1">
              AllowOverride All
              Require all granted
          </Directory>
      </VirtualHost>
      
      <VirtualHost *:80>
          ServerName site2.yourdomain.com
          DocumentRoot "/Applications/XAMPP/htdocs/site2"
          <Directory "/Applications/XAMPP/htdocs/site2">
              AllowOverride All
              Require all granted
          </Directory>
      </VirtualHost>
      
  3. 重启服务生效

    • 重启XAMPP的Apache服务
    • 重启Cloudflared隧道:cloudflared tunnel restart 你的隧道名称

问题2:指定端口出现ERR_SSL_PROTOCOL_ERROR

问题原因及修复方案

该错误核心是Cloudflared与Apache的通信协议不匹配,即Cloudflared发送的请求协议(HTTP/HTTPS)与Apache监听端口的协议不一致。

  1. 场景1:Apache端口监听HTTPS,Cloudflared用HTTP请求

    • 修复:将Cloudflared的service改为HTTPS协议,示例:
      - hostname: site3.yourdomain.com
        service: https://localhost:7443
      
    • 确保Apache的httpd-ssl.conf中7443端口配置正确:
      Listen 7443
      <VirtualHost *:7443>
          ServerName site3.yourdomain.com
          DocumentRoot "/Applications/XAMPP/htdocs/site3"
          SSLEngine on
          # 替换为你的SSL证书路径(可使用XAMPP自签证书或Cloudflare颁发证书)
          SSLCertificateFile "/Applications/XAMPP/etc/ssl.crt/server.crt"
          SSLCertificateKeyFile "/Applications/XAMPP/etc/ssl.key/server.key"
          <Directory "/Applications/XAMPP/htdocs/site3">
              AllowOverride All
              Require all granted
          </Directory>
      </VirtualHost>
      
  2. 场景2:Apache端口监听HTTP,Cloudflared用HTTPS请求

    • 修复:将Cloudflared的service改为HTTP协议,示例:
      - hostname: site3.yourdomain.com
        service: http://localhost:7443
      
    • 在httpd.conf中添加7443端口监听:
      Listen 7443
      
    • 在httpd-vhosts.conf中配置该端口的虚拟主机(无需开启SSLEngine)。
  3. 额外检查

    • 用Mac终端命令确认端口占用:lsof -i :7443,确保Apache在监听该端口
    • 确保Cloudflare域名的SSL模式与后端配置匹配(灵活/严格模式)

内容的提问来源于stack exchange,提问作者Axil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 15:07:08