为了使我的网站符合边缘内容交付网络的限制,我不得不将我的安全证书根从https://www.mysite.com
推送到子域https://www.secure.mysite.com
。我现在正在考虑一种看似新颖的方法,我可以通过我的安全子域镜像来自我的非安全域的内容。利用我的 apache 配置中的几个 mod_rewrite 命令,我已成功将其设置为将所有https://*.com
请求重定向到我的服务器,并将请求前缀为https://secure.*.com
。
现在到了我想邀请大家讨论的部分。这是我的想法的提纲。
与我的服务器的其他部分不同,通过安全子域的任何请求都将使用不同的 ErrorDocument 来处理 404 请求。此页面不会简单地显示 404 错误,而是负责尝试在基础域上查找符合条件的“代理”点。以下是示例:
- 用户请求
https://mysite.com/site/walrus.php?cool=1
- mod_rewrite 将原始请求更改为
https://secure.mysite.com/site/walrus.php?cool=1
- 服务器无法
/site/walrus.php
在安全子域中找到,并调用安全子域的 404 处理程序 - 404 ErrorDocument(一个 php 脚本)从请求中剥离安全部分,
http://mysite.com/site/walrus.php?cool=1
再次渲染 - 该脚本尝试使用
file_get_contents()
来获取http://mysite.com/site/walrus.php
- 如果脚本发现
http://mysite.com/site/walrus.php
存在资源,它会将该文件的内容作为自己的内容回显。否则,由于无法找到资源,它会继续向适用于服务器其余部分的正常 404 ErrorDocument 发出重定向标头。
那么,您对此有何评论?以前是否已经做过,是否有此类资源或示例可供我在做这件事时参考?
答案1
从你的问题来看,你似乎想要的是https://secure.mysite.com/*
-->https://www.mysite.com/*
如果是这样的话,为什么不简单地采用贫民窟解决方案来配置您的 Web 服务器以处理多个主机名(ServerAlias
在 Apache 中),将两个域指向同一个 IP,并为其配置 SSL 证书secure.mysite.com
。
是的,理论上有人可以访问您的主站点https://www.mysite.com
并出现 SSL 错误(证书名称不匹配),但这不需要配置维护或复杂的重写规则——这对您的服务器来说要好得多。