通过Kingsway的域名绑定功能,可以实现视频独立站以子目录的方式访问,所有内容权重都集中在主域名下,对搜索引擎排名更有利,操作过程需要设置域名反向代理。
在网站托管领域,SiteGround 以其卓越的性能和用户友好的界面而备受推崇。然而,当涉及到更高级的服务器配置,例如为你的域名设置反向代理时,许多用户可能会感到困惑。本文旨在提供一份详尽的指南,阐述在 SiteGround 托管环境下如何实现域名反向代理及具体操作方法,若网站托管在hostinger等,操作也是一样的。
1. SiteGround 的服务器架构与反向代理的限制
对于使用 SiteGround 共享主机(Shared Hosting)计划的用户来说,直接修改 NGINX 配置文件以设置自定义反向代理是不被允许的。
- 权限限制: 在共享主机环境中,为了防止单个用户的错误配置影响到服务器上的其他用户,核心的服务器配置文件(如 NGINX 的配置文件)是不对用户开放的。
- 管理复杂性: 开放 NGINX 的完全配置权限会极大地增加服务器管理的复杂性和潜在风险。
2. 利用 Cloudflare 实现反向代理
虽然无法直接在 SiteGround 的共享主机环境中修改服务器配置来实现反向代理,但通过 Cloudflare Workers,你可以轻松地将特定路径(/videos)的流量无缝代理到另一台服务器。Cloudflare Workers 允许你在 Cloudflare 的全球边缘网络上运行代码,从而在不影响您主站的情况下,实现对特定目录请求的拦截和转发。
这种方法不仅能实现代理需求,浏览器地址栏中的 URL 还会保持不变,对用户完全透明,同时也能享受到 Cloudflare 带来的 CDN 加速和安全防护,不需要动你的 SiteGround 服务器。
1. 让 Cloudflare 管理你的域名
在开始之前,必须先把你的域名交给 Cloudflare 管理。
- 注册并登录 Cloudflare:访问 Cloudflare 官网,如果你还没有账户,就注册一个。
- 添加你的网站:登录后,点击“添加站点”,然后输入你的域名(比如 yourwebsite.com),选择快速扫描DNS记录,接着按照提示选择Free免费计划。


- 更换域名服务器 (最关键的一步):
- Cloudflare 会给你两个新的域名服务器地址(看起来像 ada.ns.cloudflare.com 这样的)。
- 你需要登录到你购买域名的地方(比如 GoDaddy、阿里云、腾讯云等),找到 DNS 或域名服务器(Nameserver/NS)的设置。
- 把原来的域名服务器地址,换成 Cloudflare 提供给你的这两个新地址,然后保存。

提醒:这个更换过程需要一些时间才能生效,可能要几分钟,也可能要几个小时,请耐心等待。当 Cloudflare 网站上显示你的站点已激活时,你就可以进行下一步了。
2. 创建并粘贴代理代码
现在,我们要创建一个“智能小助理”(也就是 Cloudflare Worker),它会帮你判断并转发流量。
- 进入 Worker 界面:在 Cloudflare 控制台的左侧菜单,找到并点击 “Workers路由”,“管理Workers”

- 创建 Worker:选择“创建”,“从Hello World!开始”。你可以直接点击“部署”按钮,使用系统默认生成的名字。



- 编辑代码:部署成功后,点击“编辑代码”按钮。你会看到一个代码编辑器,请删掉里面所有的默认代码,然后把下面的代码完整地复制粘贴进去。

export default {
async fetch(request, env, ctx) {
const url = new URL(request.url);
// 定义您的目标服务地址
const destinationHost = "watch.kingswayvideo.com";
// 当前域名
const currentHost = url.hostname;
// 检查请求的路径是否以 /videos 开头
if (url.pathname.startsWith("/videos")) {
// 保持原始路径,不去掉 /videos 前缀,和 Nginx 行为一致
const newUrl = new URL(
url.pathname + url.search,
`https://${destinationHost}`
);
// 创建新的请求头,复制原始请求头
const newHeaders = new Headers(request.headers);
// 设置 Host 头为后端域名,和 Nginx 一致
newHeaders.set("Host", destinationHost);
// 设置 自定义 header 为当前域名
newHeaders.set("x-kingsway-proxy-original-host", `${currentHost}`);
// 创建一个新的请求,转发到目标服务
const newRequest = new Request(newUrl, {
method: request.method,
headers: newHeaders,
body: request.body,
redirect: "follow",
});
// 获取目标服务的响应并返回
let response = await fetch(newRequest);
// 创建一个可变的响应副本
response = new Response(response.body, response);
// 处理重定向,保持和 Nginx 一致的行为
const location = response.headers.get("Location");
if (location) {
const newLocation = location.replace(
`https://${destinationHost}`,
`https://${currentHost}`
);
response.headers.set("Location", newLocation);
}
// 可选:为了安全,可以移除一些不必要的响应头
response.headers.delete("X-Powered-By");
return response;
}
// 如果请求路径不是 /videos,则正常访问 SiteGround 上的原始站点
return fetch(request);
},
};- 保存并部署:点击蓝色的“保存并部署”按钮。

3. 设置触发规则
现在你的“小助理”已经准备好了,但你还需要告诉它在什么时候工作。
- 进入设置:返回到你刚刚创建的 Worker 的管理界面,找到并点击“设置” 选项卡。
- 添加路由:在“域和路由”部分,点击“添加”。

- 填写路由规则:
- 路由 (Route):在这里填入 *yourwebsite.com/videos*
- 注意:请把 yourwebsite.com 换成你自己的真实域名。
- 前后的两个 * 号是通配符,意思是只要访问你域名下的 /videos 目录(包括目录里的任何文件),这个规则都会生效。
- Worker: 会自动选择你当前编辑的这个 Worker。
- 最后点击“保存”。
- 路由 (Route):在这里填入 *yourwebsite.com/videos*


4. 检查效果
恭喜你,全部设置完成了!现在来测试一下:
- 访问 https://yourwebsite.com,应该看到的是你托管在 SiteGround 上的主网站。
- 访问 https://yourwebsite.com/videos/,这时你应该能看到存放在Kingsway上的视频,但浏览器的地址栏显示的网址依然是 yourwebsite.com 开头。
3. 利用 Cloudflare 实现HTML网页加速
Cloudflare默认只会自动缓存您网站的“静态”资源,比如图片、CSS和JS文件。但它不会默认缓存HTML页面本身。具体操作可参考教程,如何通过Cloudflare页面规则,3步大幅提升网站速度并解决LCP问题。你也可以使用更简单的Cloudflare APO付费方案(推荐),在WordPress站点添加其插件,一键优化网站加载速度。
通过以上步骤,你就成功地利用 Cloudflare 在不改动 SiteGround 配置的情况下,实现了对特定目录的反向代理,这是一种既灵活又强大的解决方案。
4. 允许AI爬虫抓取
进入域名之后,选择AI Crawl Control,把主流 AI 全部设为 Allow。便于用户通过AI也能搜到你的内容和视频。

FAQ
1. 这个操作需要花钱吗?Cloudflare 的免费计划能一直用吗?
你完全可以放心,本教程描述的所有操作都可以在 Cloudflare 的免费计划下完成,不需要任何费用。Cloudflare 的核心免费计划是长期有效的,并不是试用。同时,我们用到的 Cloudflare Workers 功能也有一个非常慷慨的免费额度,对于绝大多数个人独立站来说完全足够了。
2. 既然是免费的,那我什么时候才需要考虑付费呢?
当你网站的流量变得非常大时,你才可能需要考虑付费。Cloudflare Workers 的免费计划每天提供 10 万次请求。
- 什么是“请求”? 用户每访问一次你的 /videos 目录下的页面或加载一个视频文件,都算一次请求。
- 10万次多吗? 非常多!对于刚起步或中小型网站来说,每天的视频访问量很难超过这个数字。只有当你的网站发展成一个热门的视频站,每天有数万甚至十万人来访问视频时,你才需要考虑升级到付费计划。
- 何时升级 Pro ($20):
- 需要 WAF 防火墙拦截恶意攻击。
- 需要更高级的图片压缩(Polish/Mirage),且源站优化已达瓶颈。
- 需要超过 3条 Page Rules。
3. 这个方法会影响我主站(SiteGround 上)的速度吗?
通常不会,反而可能会让你的网站整体速度变得更快。 因为 Cloudflare 本身就是一个全球 CDN(内容分发网络),它会缓存你主站的静态内容(如图片、CSS 文件),并从离访客最近的服务器提供,从而加快访问速度。而 /videos 目录的访问速度,则取决于你那台视频服务器的性能。
4. 用户访问视频时,浏览器地址栏的网址会变吗?
不会变! 这正是这个方法最大的优点。用户访问 https://yourwebsite.com/videos/ 时,地址栏显示的网址就是这个,他们完全感觉不到内容其实来自另一台服务器。这让你的网站看起来非常专业和统一。
5. 设置这个反向代理复杂吗?如果我搞错了怎么办?
一点也不复杂,你只要严格按照教程的步骤操作就行。 最容易出错的地方就是复制粘贴代码和设置路由规则。
- 如果搞错了:最坏的情况也只是 /videos 目录无法访问,并不会影响你托管在 SiteGround 上的主网站。
- 如何修正:你可以随时回到 Cloudflare 的 Worker 编辑器里修改代码,或者在“触发器”页面修改或删除路由规则,影响会立刻消失。
6. 为什么要关闭 SiteGround CDN?配置SiteGround缓存?如何操作?
原因: 你已经在使用 Cloudflare(外部 CDN)。同时开启 SiteGround CDN 会导致“双重 CDN”冲突,引发访问慢、缓存无法清理、SSL 错误,以及导致 Worker 无法正确回源。虽然关了 CDN,但建议保留服务器端的内存缓存(SiteGround 缓存 Caching)以提升性能。
如何操作?
先在Cloudflare增加网站IP解析(这是最关键的一步,否则网站会打不开!),再关闭SiteGround上的CDN:
- 获取真实 IP: 在 SiteGround Site Tools 首页左侧,找到 Site IP(通常是一个独立的 IP)。
- 修改 Cloudflare DNS:
- 删除旧的指向 SiteGround CDN 的 A 记录。
- 添加新 A 记录: Name 填 @,Content 填刚才获取的 Site IP。
- 开启代理: 务必开启橙色云朵 (Proxied)。
- 登录 SiteGround Site Tools。
- 进入 Speed -> CDN。
- 点击 DEACTIVATE(停用)。
- 进入 SiteGround Site Tools -> Speed -> Caching。
- 开启 (ON) 以下选项:
- Nginx Direct Delivery(静态文件缓存)
- Dynamic Cache(动态页面缓存,最重要)
- Memcached(数据库缓存)
7. 如何查看我的网站是否已经成功由 Cloudflare 解析和代理?
有三种方法可以确认 Cloudflare 是否生效:
- Ping 命令(最直接):
- 在电脑终端(CMD 或 Terminal)输入 ping yourdomain.com。
- 成功: 返回的 IP 是 104.x.x.x 或 172.x.x.x(Cloudflare 的泛播 IP)。
- 失败: 返回 34.x.x.x 或 35.x.x.x(SiteGround 的真实源站 IP)。
- 浏览器响应头(最准确):
- 按 F12 -> Network -> 刷新页面 -> 点击第一个请求。
- 查看 Response Headers。
- 成功: 出现 server: cloudflare 和 cf-ray: xxxxx。
- 在线工具:
- 使用 whatsmydns.net 查询 A 记录,全球大部分地区应显示 Cloudflare IP。
8. 如何检测 /videos/ 子目录是否成功实现了 Worker 反向代理?
反向代理成功的标志是:内容变了,但浏览器地址栏 URL 没变。
- 观察 URL: 访问 yourdomain.com/videos/xxx,地址栏必须保持不变,内容来自视频独立站。如果显示为404,那就还没有成功。
- 检查 HTTP 状态码:
- 在开发者工具(F12)中,状态码应为 200 OK。
- 如果是 301/302,说明发生了跳转。
- 如果是 404,说明请求穿透了 Worker,打到了源站 WordPress 上(且源站没有该页面)。
- 查看 Cloudflare Worker 实时日志:
- 进入 CF 后台 -> Workers -> Logs -> Begin log stream。
- 访问页面,如果日志区有滚动记录,说明流量经过了 Worker。
9. 为什么 Ping 出来的 IP 还是源站 IP,但浏览器显示 Cloudflare?
- 原因: 你的浏览器使用了代理软件(梯子),代理软件在远程解析到了正确的 Cloudflare IP。但 CMD/终端默认走本地网络,本地 DNS 缓存尚未刷新。
- 解决: 只要浏览器能看到 server: cloudflare 且网站能打开,说明配置已生效。本地 Ping 不准没关系,等待自动刷新即可。
10. 修改配置后需要等待多久生效?
- Cloudflare 后台开关(如路由、Worker): 几乎是 即时生效(< 10秒)。
- DNS 修改(A 记录): 全球生效通常需要几分钟,最长可能 24 小时(取决于 TTL)。
- Nameserver (NS) 修改: 如果你是在域名注册商那里改 NS,可能需要 1-24 小时。
11. 哪些 DNS 记录必须设为“灰色云朵 (DNS Only)”,为什么?
结论: 除了主域名 (yourdomain.com) 和 www,绝大多数其他记录都建议设为灰色云朵。
请务必检查以下三类记录,并将它们的 Proxy status 改为 DNS Only (灰色云朵):
- 邮件收发类 (必须关,否则连不上)
- 记录名: mail, smtp, imap, pop, pop3, exchange。
- 以及: 任何你用来在 Outlook/手机邮箱里填写的“服务器地址”对应的 CNAME 或 A 记录(例如你截图里的 hostingermail-a, hostingermail-b)。
- 原因: Cloudflare 的橙色云朵只代理 HTTP/HTTPS (网页) 流量。邮件协议 (SMTP 25/465/587, IMAP 143/993) 无法通过橙色云朵传输。如果开了橙色,你的邮件客户端会一直报错“无法连接服务器”。
- 文件传输与管理类 (必须关,否则连不上)
- 记录名: ftp, ssh, sftp, cpanel, whm。
- 原因: 同样原因,FTP (端口 21) 和 SSH (端口 22) 协议不支持 Cloudflare 免费版的代理。必须直连服务器 IP 才能上传文件或管理后台。
- 自动配置类 (强烈建议关,防止报错)
- 记录名: autoconfig, autodiscover。
- 原因: 虽然这些走的是 HTTP 协议,理论上可以代理。但 Cloudflare 的 SSL 证书和缓存机制有时会干扰邮件客户端(如 Outlook)抓取配置文件的过程,导致配置失败。直连(灰色)是最稳妥的做法。
对照此表进行最终核对:
| 记录类型 | 记录名称 (Name) | 正确状态 |
| A / CNAME | www | ☁️ 橙色 (Proxied) |
| A | @ (根域名) | ☁️ 橙色 (Proxied) |
| A / CNAME | ☁️ 灰色 (DNS Only) | |
| CNAME | ftp | ☁️ 灰色 (DNS Only) |
| A / CNAME | ssh | ☁️ 灰色 (DNS Only) |
| CNAME | autoconfig | ☁️ 灰色 (DNS Only) |
| CNAME | autodiscover | ☁️ 灰色 (DNS Only) |
| CNAME | hostingermail-x | ☁️ 灰色 (DNS Only) |
