如何设置 Gatekeeper 托管设置,如果页面存在则提供服务,如果不存在则默认使用另一台服务器?

如何设置 Gatekeeper 托管设置,如果页面存在则提供服务,如果不存在则默认使用另一台服务器?

我正在构建一个看门人应用程序,让 MyClientsSite.com 的所有者显示我在 MySite.com 上托管的修改后的页面,但 MyClientsSite.com 的访问者无法知道修改后的页面来自我。

如果我的 MySite.com 网站上不存在该页面,它应该继续提供 MyClientsSite.com 上托管的默认 page.html,就像平常一样。

所以我想知道的是,鉴于我显然拥有 MySite.com 的完全访问权限,但只有 MyClientsSite.com 的域级访问权限(无 FTP),我该如何设置?提前致谢

答案1

您无法通过 DNS 获得此行为。

您可以拥有多个 A 记录,但那时它只会以循环方式工作。此外,DNS 具有 TTL(生存时间),因此如果您想进行故障转移,您将遇到麻烦,除非您的 TTL 非常短,这违反了所有建议。

答案2

我可以想象两种方法来实现这一点。第一种方法对您而言带宽占用较少,但需要更多地访问客户的网站。第二种方法几乎不需要访问客户的网站,但会通过您的网站代理所有数据,这可能会增加您的带宽成本:

1) 至少,您需要安装一个 .htaccess 文件,以及一些 PHP、CGI 或其他程序来检索 myclientssite.com 上的页面。Myclientssite.com 还需要启用 mod_rewrite 才能完成此操作。请求被路由到 PHP 脚本,该脚本检查是否存在来自您服务器的匹配文件。如果存在,它实际上充当代理并转发数据。(您的服务器应该设计正确的数据,此客户端脚本只会传递该数据)如果您的服务器给出 404,则脚本可以自己提供本地页面,或者通过重定向规则将处理返回给 apache。只是一句警告:这种处理在短时间内可能会变得昂贵,因此您应该包括某种缓存列表或来自服务器的文件列表,以便脚本可以在短时间内告诉它需要获取哪些文件以及应该传递哪些文件。

2) 另一个解决方案可能是让您的客户端为您的站点创建一个 DNS 别名 (protected.myclientsite.com),并让您的服务器反向代理其数据。然后,客户端将设置 ACL,以仅允许您的站点从实际受保护的站点读取文件。但这会增加您的带宽使用量,因此如果受保护的数据是...大图片、视频文件等,则不太理想。

相关内容