按ESC键关闭
岚岚天空
首页
文章
心情随笔
技术杂谈
学习笔记
书签
AI工具
IP工具
学习文档
图片视频
网站模板
开源系统
关于
联系
岚岚天空
首页
文章
心情随笔
技术杂谈
学习笔记
书签
AI工具
IP工具
学习文档
图片视频
网站模板
开源系统
关于
联系
技术杂谈
域名接入 Cloudflare + 宝塔多站点 HTTPS 串站问题解决
岚岚天空
04月28日 16:49
5 min
2689 浏览
0 评论
# 实战记录:GoDaddy 域名接入 Cloudflare + 宝塔多站点 HTTPS 串站问题解决 ## 一、背景与目标 我有一个在 GoDaddy 注册的域名 `123456.com`,希望使用 Cloudflare 的 CDN 和安全防护,同时网站部署在阿里云服务器上,使用宝塔面板管理多个站点。本文记录了从域名迁移到解决 HTTPS 访问“串站”的完整过程。 ## 二、将 GoDaddy 域名接入 Cloudflare ### 2.1 核心思路:只改 DNS,不转移注册商 - 保留 GoDaddy 作为域名注册商 - 将域名的 **Nameservers(DNS 服务器)** 改为 Cloudflare 提供的地址 - 后续所有 DNS 解析都在 Cloudflare 管理 ### 2.2 操作步骤 #### 步骤1:在 Cloudflare 添加站点 1. 登录 Cloudflare 仪表盘,点击“添加站点” 2. 输入你的根域名(如 `123456.com`),选择 **Free** 套餐 3. 等待系统自动扫描原有的 DNS 记录(可手动核对补充) #### 步骤2:在 GoDaddy 修改 Nameservers 1. 登录 GoDaddy,进入“域名管理” 2. 找到目标域名,点击 **DNS** → **Nameservers** 3. 改为 **自定义**,填入 Cloudflare 提供的两个地址(格式:`xxx.ns.cloudflare.com`) 4. 保存并确认 #### 步骤3:等待生效(1~24 小时) - Cloudflare 仪表盘状态从 **Pending** 变为 **Active** 即代表接管成功 - 可执行 `dig NS 123456.com` 验证返回是否为 Cloudflare 的 NS #### 步骤4:在 Cloudflare 配置 DNS 并开启代理 - 进入 Cloudflare **DNS** 选项卡 - 添加/修改解析记录(A、CNAME、MX 等) - 将需要加速的记录右侧 **云朵图标** 点成 **橙色**(Proxied)→ 开启 CDN ### 2.3 重要提醒 - **后续所有解析记录的增删改,都必须去 Cloudflare 操作**,GoDaddy 的 DNS 管理页面已不再生效 - 不要在 GoDaddy 上再修改任何 DNS 记录,除非你打算把 NS 改回去 --- ## 三、遇到的问题:访问根路径时“串站” ### 3.1 现象描述 - 访问 `https://www.123456.com/index.html` → **正常**,显示正确的网站 - 访问 `https://www.123456.com` 或 `https://123456.com` → **跳转到服务器上其他站点**(错误的网站内容) ### 3.2 原因分析 这是宝塔面板(Nginx)多站点环境下的典型问题: 1. **Nginx 的 `default_server` 机制**:当一个请求的域名(`Host` 头)与所有 `server_name` 都不完全匹配时,会交给默认站点处理。 2. **HTTPS 的敏感性**:`123456.com` 与 `www.123456.com` 在 Nginx 中被视为两个不同的域名。如果 B 站点(串到的站)没有配置 HTTPS 或证书不匹配,Nginx 会“降级”匹配到第一个加载的 HTTPS 站点。 3. **根本原因**:访问根路径时,Nginx 对 `Host` 头的匹配要求严格,而你的站点中 `123456.com` 缺少唯一且有效的 SSL 绑定,导致被错误路由。 --- ## 四、解决方案:根治串站问题 ### 4.1 优先方案:为所有站点配置 SSL 并开启强制 HTTPS(最有效) 在宝塔面板中: 1. **为每一个站点**(包括那个串过去的 B 站点)都申请免费 SSL 证书(Let's Encrypt) 2. **勾选“强制 HTTPS”**,使所有 HTTP 请求自动跳转到 HTTPS 3. 重启 Nginx 或 PHP 服务 > **为什么有效**:这样保证了每个站点在 443 端口都有唯一、有效的证书和配置,Nginx 可以准确识别不同域名,不再发生路由混乱。 ### 4.2 备用方案:调整默认站点(如果方案一无效) 1. 在宝塔面板 → **网站** 模块 2. 找到你希望作为默认的站点(即 `123456.com`) 3. 点击“设置” → **默认站点** → “设为默认站点” 4. 重启 Nginx ### 4.3 验证方法 - 清除浏览器缓存,或用隐私模式访问 `https://123456.com` - 在宝塔中确认 `123456.com` 和 `www.123456.com` 都已添加到该站点的“域名管理”列表中 - 若还不行,检查 Nginx 配置文件(`/www/server/panel/vhost/nginx/`),但通常上述步骤已足够 --- ## 五、关于 Cloudflare 与宝塔“双证书”的澄清 ### 5.1 是否存在冲突? **没有冲突,它们分工明确,相互配合。** | 证书/模式 | 位置 | 作用 | |----------|------|------| | Cloudflare 边缘证书 | 访客 ↔ CF 节点 | 公网加密,自动提供 | | 宝塔 Let's Encrypt 证书 | CF 节点 ↔ 源站服务器 | 后端加密,你手动申请 | | CF SSL/TLS 模式 = **完全(Full)** | 工作模式 | 强制 CF 以 HTTPS 连接源站,并使用你安装的宝塔证书 | ### 5.2 正确工作流程 1. 访客访问 `https://123456.com`,浏览器信任 CF 边缘证书 2. CF 收到请求,按照 **Full** 模式,向你的源站发起 HTTPS 连接 3. 源站 Nginx 验证宝塔证书有效且域名匹配 → 通过 4. Nginx 返回正确的内容,CF 加密回传访客 ### 5.3 为什么这是解决串站的关键 你之前访问根路径串站,正是因为 CF 到源站这一段 HTTPS 没有明确匹配到 `123456.com` 这个站点。现在你为所有站点统一配置了宝塔 SSL 证书,CF 的 Full 模式得以正确识别每个域名的证书,从而根治了串站。 --- ## 六、最终状态与建议 ### 6.1 推荐配置组合 - **DNS 解析**:Cloudflare 管理(NS 指向 CF) - **源站**:宝塔面板 + Nginx - **SSL 证书**:宝塔申请 Let's Encrypt(所有站点都申请并开启强制 HTTPS) - **Cloudflare SSL/TLS 模式**:**完全(Full)** 或 **完全(严格)** - **CDN 代理**:需要加速的记录开启橙色云朵 ### 6.2 日常维护提醒 - 证书续期:宝塔会自动续期 Let's Encrypt,无需干预 - DNS 修改:只在 Cloudflare 操作 - 新增站点:记得同时配置宝塔 SSL 和 Cloudflare DNS,并测试根路径访问是否正常 --- ## 七、常见问题速查表 | 现象 | 可能原因 | 解决办法 | |------|----------|----------| | 域名解析不生效 | NS 未修改或未生效 | 检查 GoDaddy NS 是否为 CF 地址,等待生效 | | 网站无法访问,提示 SSL 错误 | CF 模式为 Flexible 但源站未开启 HTTPS | 改为 Full 模式,并确保源站有有效证书 | | 访问根路径串站 | 部分站点未配置 HTTPS / 默认站点设置不当 | 为所有站点申请 SSL + 强制 HTTPS | | 访问 `index.html` 正常,根路径异常 | 同上 | 同上 | | 重定向次数过多 | CF 模式 Flexible + 源站强制 HTTPS | 改为 Full 或 Full (strict) | --- > **总结一句话**:Godaddy 域名接入 Cloudflare 需要改 NS;解析后续全在 CF 操作;宝塔多站点访问根路径串站,只需为所有站点统一申请 SSL 并开启强制 HTTPS,配合 CF 的 Full 模式即可完美解决。 **本文档基于真实排错过程整理,希望对遇到类似问题的你有帮助。**
Share this:
上一篇
Docker & Docker Compose 常用命令参考
下一篇
七牛云资源防盗链与流量优化终极指南:从原理到实战