HTTPS 和 HTTP 流量有不同路由吗?

HTTPS 和 HTTP 流量有不同路由吗?

我目前正在使用 Amazon Route53 来管理我们的 DNS,但遇到了障碍。

我们的静态内容由 AWS S3 提供,但 S3 不支持带 CNAME 的 HTTPS。为了解决跨域问题,我们的静态内容通过 CNAME 提供。

所以,我想继续通过 S3 提供 HTTP 内容,并通过我们自己的网络服务器提供我们的 HTTPS 内容。

但是我不确定如何将 HTTP 流量路由到一个域(s3),并将 HTTPS 路由到另一个域(Web 服务器)。

答案1

DNS 仅关心将主机名解析为 IP,而不关心协议或端口号——这意味着直接回答您的问题;不:您不能使用它来路由https://example.com到一个 IP 和http://example.com另一个 IP。


有几种常见的方法可以解决这个问题:

  • 使用反向代理监听http://https://example.com,例如nginx。该代理可以查看协议甚至请求路径,并适当地路由到其他服务器。
    • 除了使您的方案成为可能之外,您还可以获得其他好处:SSL 卸载以减少应用服务器上的负载,以及透明地运行多个应用服务器以实现冗余或扩展的能力。
    • 缺点:如果您的所有服务器不在同一个本地网络上,那么这将非常低效(并且缓慢),因为您需要两次跨越互联网。
  • 使用单独的子域名,并让你的服务器发送CORS标题。关于如何做到这一点,有大量的资源,因此我在这里就不多说了。
    • 本质上,您将拥有http://static.example.comhttps://example.com。DNS将解析static.example.com为S3和example.com您的其他应用服务器。

如果您的应用服务器被慢速网络连接隔开(听起来确实如此),那么恕我直言,唯一的办法就是采用基于 DNS 的解决方案。

相关内容