托管在SiteGround/Hostinger等平台上的网站,如何实现子目录方式使用视频独立站?

通过Kingsway的域名绑定功能,可以实现视频独立站以子目录的方式访问,所有内容权重都集中在主域名下,对搜索引擎排名更有利,操作过程需要设置域名反向代理。

在网站托管领域,SiteGround 以其卓越的性能和用户友好的界面而备受推崇。然而,当涉及到更高级的服务器配置,例如为你的域名设置反向代理时,许多用户可能会感到困惑。本文旨在提供一份详尽的指南,阐述在 SiteGround 托管环境下如何实现域名反向代理及具体操作方法,若网站托管在hostinger等,操作也是一样的。

SiteGround 的服务器架构与反向代理的限制

对于使用 SiteGround 共享主机(Shared Hosting)计划的用户来说,直接修改 NGINX 配置文件以设置自定义反向代理是不被允许的。

  • 权限限制: 在共享主机环境中,为了防止单个用户的错误配置影响到服务器上的其他用户,核心的服务器配置文件(如 NGINX 的配置文件)是不对用户开放的。
  • 管理复杂性: 开放 NGINX 的完全配置权限会极大地增加服务器管理的复杂性和潜在风险。

利用 Cloudflare 实现反向代理

虽然无法直接在 SiteGround 的共享主机环境中修改服务器配置来实现反向代理,但通过 Cloudflare Workers,你可以轻松地将特定路径(/videos)的流量无缝代理到另一台服务器。Cloudflare Workers 允许你在 Cloudflare 的全球边缘网络上运行代码,从而在不影响您主站的情况下,实现对特定目录请求的拦截和转发。

这种方法不仅能实现代理需求,浏览器地址栏中的 URL 还会保持不变,对用户完全透明,同时也能享受到 Cloudflare 带来的 CDN 加速和安全防护,不需要动你的 SiteGround 服务器。

让 Cloudflare 管理你的域名

在开始之前,必须先把你的域名交给 Cloudflare 管理。

  • 注册并登录 Cloudflare:访问 Cloudflare 官网,如果你还没有账户,就注册一个。
  • 添加你的网站:登录后,点击“添加站点”,然后输入你的域名(比如 yourwebsite.com),选择快速扫描DNS记录,接着按照提示选择Free免费计划。
  • 更换域名服务器 (最关键的一步)
    • Cloudflare 会给你两个新的域名服务器地址(看起来像 ada.ns.cloudflare.com 这样的)。
    • 你需要登录到你购买域名的地方(比如 GoDaddy、阿里云、腾讯云等),找到 DNS 或域名服务器(Nameserver/NS)的设置。
    • 把原来的域名服务器地址,换成 Cloudflare 提供给你的这两个新地址,然后保存。

提醒:这个更换过程需要一些时间才能生效,可能要几分钟,也可能要几个小时,请耐心等待。当 Cloudflare 网站上显示你的站点已激活时,你就可以进行下一步了。

创建并粘贴代理代码

现在,我们要创建一个“智能小助理”(也就是 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);
  },
};
  • 保存并部署:点击蓝色的“保存并部署”按钮。

设置触发规则

现在你的“小助理”已经准备好了,但你还需要告诉它在什么时候工作。

  • 进入设置:返回到你刚刚创建的 Worker 的管理界面,找到并点击“设置” 选项卡。
  • 添加路由:在“域和路由”部分,点击“添加”。
  • 填写路由规则
    • 路由 (Route):在这里填入 *yourwebsite.com/videos*
      • 注意:请把 yourwebsite.com 换成你自己的真实域名。
      • 前后的两个 * 号是通配符,意思是只要访问你域名下的 /videos 目录(包括目录里的任何文件),这个规则都会生效。
    • Worker: 会自动选择你当前编辑的这个 Worker。
    • 最后点击“保存”。

检查效果

恭喜你,全部设置完成了!现在来测试一下:

  • 访问 https://yourwebsite.com,应该看到的是你托管在 SiteGround 上的主网站。
  • 访问 https://yourwebsite.com/videos/,这时你应该能看到存放在Kingsway上的视频,但浏览器的地址栏显示的网址依然是 yourwebsite.com 开头。

利用 Cloudflare 实现HTML网页加速

Cloudflare默认只会自动缓存您网站的“静态”资源,比如图片、CSS和JS文件。但它不会默认缓存HTML页面本身。具体操作可参考教程,如何通过Cloudflare页面规则,3步大幅提升网站速度并解决LCP问题。你也可以使用更简单的Cloudflare APO付费方案(推荐),在WordPress站点添加其插件,一键优化网站加载速度。

通过以上步骤,你就成功地利用 Cloudflare 在不改动 SiteGround 配置的情况下,实现了对特定目录的反向代理,这是一种既灵活又强大的解决方案。

允许AI爬虫抓取

进入域名之后,选择AI Crawl Control,把主流 AI 全部设为 Allow。便于用户通过AI也能搜到你的内容和视频。

FAQ

这个操作需要花钱吗?Cloudflare 的免费计划能一直用吗?

你完全可以放心,本教程描述的所有操作都可以在 Cloudflare 的免费计划下完成,不需要任何费用。Cloudflare 的核心免费计划是长期有效的,并不是试用。同时,我们用到的 Cloudflare Workers 功能也有一个非常慷慨的免费额度,对于绝大多数个人独立站来说完全足够了。

既然是免费的,那我什么时候才需要考虑付费呢?

当你网站的流量变得非常大时,你才可能需要考虑付费。Cloudflare Workers 的免费计划每天提供 10 万次请求

  • 什么是“请求”? 用户每访问一次你的 /videos 目录下的页面或加载一个视频文件,都算一次请求。
  • 10万次多吗? 非常多!对于刚起步或中小型网站来说,每天的视频访问量很难超过这个数字。只有当你的网站发展成一个热门的视频站,每天有数万甚至十万人来访问视频时,你才需要考虑升级到付费计划。
  • 何时升级 Pro ($20):
    • 需要 WAF 防火墙拦截恶意攻击。
    • 需要更高级的图片压缩(Polish/Mirage),且源站优化已达瓶颈。
    • 需要超过 3条 Page Rules。

这个方法会影响我主站(SiteGround 上)的速度吗?

通常不会,反而可能会让你的网站整体速度变得更快。 因为 Cloudflare 本身就是一个全球 CDN(内容分发网络),它会缓存你主站的静态内容(如图片、CSS 文件),并从离访客最近的服务器提供,从而加快访问速度。而 /videos 目录的访问速度,则取决于你那台视频服务器的性能。

用户访问视频时,浏览器地址栏的网址会变吗?

不会变! 这正是这个方法最大的优点。用户访问 https://yourwebsite.com/videos/ 时,地址栏显示的网址就是这个,他们完全感觉不到内容其实来自另一台服务器。这让你的网站看起来非常专业和统一。

设置这个反向代理复杂吗?如果我搞错了怎么办?

一点也不复杂,你只要严格按照教程的步骤操作就行。 最容易出错的地方就是复制粘贴代码和设置路由规则。

  • 如果搞错了:最坏的情况也只是 /videos 目录无法访问,并不会影响你托管在 SiteGround 上的主网站
  • 如何修正:你可以随时回到 Cloudflare 的 Worker 编辑器里修改代码,或者在“触发器”页面修改或删除路由规则,影响会立刻消失。

为什么要关闭 SiteGround CDN?配置SiteGround缓存?如何操作?

原因: 你已经在使用 Cloudflare(外部 CDN)。同时开启 SiteGround CDN 会导致“双重 CDN”冲突,引发访问慢、缓存无法清理、SSL 错误,以及导致 Worker 无法正确回源。虽然关了 CDN,但建议保留服务器端的内存缓存(SiteGround 缓存 Caching)以提升性能。

如何操作?

先在Cloudflare增加网站IP解析(这是最关键的一步,否则网站会打不开),再关闭SiteGround上的CDN:

  1. 获取真实 IP: 在 SiteGround Site Tools 首页左侧,找到 Site IP(通常是一个独立的 IP)。
  2. 修改 Cloudflare DNS:
    • 删除旧的指向 SiteGround CDN 的 A 记录。
    • 添加新 A 记录: Name 填 @,Content 填刚才获取的 Site IP
    • 开启代理: 务必开启橙色云朵 (Proxied)。
  3. 登录 SiteGround Site Tools
  4. 进入 Speed -> CDN
  5. 点击 DEACTIVATE(停用)。
  6. 进入 SiteGround Site Tools -> Speed -> Caching
  7. 开启 (ON) 以下选项:
    • Nginx Direct Delivery(静态文件缓存)
    • Dynamic Cache(动态页面缓存,最重要)
    • Memcached(数据库缓存)

如何查看我的网站是否已经成功由 Cloudflare 解析和代理?

有三种方法可以确认 Cloudflare 是否生效:

  1. 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)。
  2. 浏览器响应头(最准确):
    • 按 F12 -> Network -> 刷新页面 -> 点击第一个请求。
    • 查看 Response Headers
    • 成功: 出现 server: cloudflare 和 cf-ray: xxxxx。
  3. 在线工具:
    • 使用 whatsmydns.net 查询 A 记录,全球大部分地区应显示 Cloudflare IP。

如何检测 /videos/ 子目录是否成功实现了 Worker 反向代理?

反向代理成功的标志是:内容变了,但浏览器地址栏 URL 没变。

  1. 观察 URL: 访问 yourdomain.com/videos/xxx,地址栏必须保持不变,内容来自视频独立站。如果显示为404,那就还没有成功。
  2. 检查 HTTP 状态码:
    • 在开发者工具(F12)中,状态码应为 200 OK
    • 如果是 301/302,说明发生了跳转。
    • 如果是 404,说明请求穿透了 Worker,打到了源站 WordPress 上(且源站没有该页面)。
  3. 查看 Cloudflare Worker 实时日志:
    • 进入 CF 后台 -> Workers -> Logs -> Begin log stream
    • 访问页面,如果日志区有滚动记录,说明流量经过了 Worker。

为什么 Ping 出来的 IP 还是源站 IP,但浏览器显示 Cloudflare?

  • 原因: 你的浏览器使用了代理软件(梯子),代理软件在远程解析到了正确的 Cloudflare IP。但 CMD/终端默认走本地网络,本地 DNS 缓存尚未刷新。
  • 解决: 只要浏览器能看到 server: cloudflare 且网站能打开,说明配置已生效。本地 Ping 不准没关系,等待自动刷新即可。

修改配置后需要等待多久生效?

  • Cloudflare 后台开关(如路由、Worker): 几乎是 即时生效(< 10秒)。
  • DNS 修改(A 记录): 全球生效通常需要几分钟,最长可能 24 小时(取决于 TTL)。
  • Nameserver (NS) 修改: 如果你是在域名注册商那里改 NS,可能需要 1-24 小时。

哪些 DNS 记录必须设为“灰色云朵 (DNS Only)”,为什么?

结论: 除了主域名 (yourdomain.com) 和 www,绝大多数其他记录都建议设为灰色云朵。

请务必检查以下三类记录,并将它们的 Proxy status 改为 DNS Only (灰色云朵)

  1. 邮件收发类 (必须关,否则连不上)
    • 记录名: mail, smtp, imap, pop, pop3, exchange。
    • 以及: 任何你用来在 Outlook/手机邮箱里填写的“服务器地址”对应的 CNAME 或 A 记录(例如你截图里的 hostingermail-a, hostingermail-b)。
    • 原因: Cloudflare 的橙色云朵只代理 HTTP/HTTPS (网页) 流量。邮件协议 (SMTP 25/465/587, IMAP 143/993) 无法通过橙色云朵传输。如果开了橙色,你的邮件客户端会一直报错“无法连接服务器”。
  2. 文件传输与管理类 (必须关,否则连不上)
    • 记录名: ftp, ssh, sftp, cpanel, whm。
    • 原因: 同样原因,FTP (端口 21) 和 SSH (端口 22) 协议不支持 Cloudflare 免费版的代理。必须直连服务器 IP 才能上传文件或管理后台。
  3. 自动配置类 (强烈建议关,防止报错)
    • 记录名: autoconfig, autodiscover。
    • 原因: 虽然这些走的是 HTTP 协议,理论上可以代理。但 Cloudflare 的 SSL 证书和缓存机制有时会干扰邮件客户端(如 Outlook)抓取配置文件的过程,导致配置失败。直连(灰色)是最稳妥的做法。

对照此表进行最终核对:

记录类型记录名称 (Name)正确状态
A / CNAMEwww☁️ 橙色 (Proxied)
A@ (根域名)☁️ 橙色 (Proxied)
A / CNAMEmail☁️ 灰色 (DNS Only)
CNAMEftp☁️ 灰色 (DNS Only)
A / CNAMEssh☁️ 灰色 (DNS Only)
CNAMEautoconfig☁️ 灰色 (DNS Only)
CNAMEautodiscover☁️ 灰色 (DNS Only)
CNAMEhostingermail-x☁️ 灰色 (DNS Only)
目录

免费试用Kingsway

点击按钮后你将跳转到Kingsway的注册页面,注册后就可以免费试用了。

让每一个视频都为你赢得商业机会,让每一次播放都为你带来价值。

Hi!我是Jane,欢迎咨询!

另外,我们已经准备了一个帮助中心,建议你在联系之前先看看,也许你的问题和答案都已经在那里清楚说明了。

让你在视频中拿到询盘

点击按钮后跳转到Kingsway英文官网的注册页面,你注册后在页面右上角点击upgrade按钮可以进行支付了。

让每一个视频都为你赢得商业机会,让每一次播放都为你带来询盘价值。