使用Cloudflared Tunnel在单台Mac Mini上托管多域名站点遇障求助
Cloudflared Tunnel多域名配置问题解决方法
问题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目标,避免路径冲突。检查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>
- 确保
重启服务生效
- 重启XAMPP的Apache服务
- 重启Cloudflared隧道:
cloudflared tunnel restart 你的隧道名称
问题2:指定端口出现ERR_SSL_PROTOCOL_ERROR
问题原因及修复方案
该错误核心是Cloudflared与Apache的通信协议不匹配,即Cloudflared发送的请求协议(HTTP/HTTPS)与Apache监听端口的协议不一致。
场景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>
- 修复:将Cloudflared的
场景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)。
- 修复:将Cloudflared的
额外检查
- 用Mac终端命令确认端口占用:
lsof -i :7443,确保Apache在监听该端口 - 确保Cloudflare域名的SSL模式与后端配置匹配(灵活/严格模式)
- 用Mac终端命令确认端口占用:
内容的提问来源于stack exchange,提问作者Axil
相关产品推荐
相关产品推荐

