0

这是我的设置。

  1. 由 squarespace.com (www.example-domain.com) 托管的公共网站
  2. Web 应用程序(AWS EC2/ELB),我想通过同一个域可用。(my.example-domain.com)
  3. 以 www.example-domain.com/username 形式提供的自定义个人资料页面

我的问题是如何设置 DNS 来实现这一点?如果不能仅通过 DNS 完成,有什么建议吗?我面临的问题是,如果 squarespace.com 正在处理 www.example-domain.com 流量,我怎么能让它只部分处理某些 url。也许我这样做是错的,但都是在一起的。

4

2 回答 2

2

前两个没问题。正如您所提到的,(1)与(3)不兼容,因为必须将纯 DNS 配置配置wwwexample-domain.com单个端点。

非 DNS 解决方法的一些想法:

  • 启用 squarespace.com 域sqsp.example-domain.com并将您的www域配置为自定义 Web 服务器,在该服务器上将根 ( /) 配置为重定向 (HTTP 300) 到 sqsp.example-domain.com. 这对用户来说是非常透明的,除了他的浏览器地址。
  • 相同但在/包含sqsp.example-domain.com.

iframe 方法是“不太干净”,谷歌解决方案来建立你的意见。

编辑: 正如@mike-ryan 提到的,还有代理解决方案,您可以在其中配置 Web 服务器以请求另一台服务器将内容返回给您的用户。如果您已经在使用 AWS,一个聪明的方法是使用 CloudFront:您可以将 CloudFront 设置为在一个 URL 上代理一个服务器并在另一个 URL 上代理另一台服务器。实际上,这可能是实现您需要的更快的方法。当然,代理是一个多“跳”,因此可能会增加更多延迟。

于 2015-08-20T21:04:26.110 回答
1

如果您真的想在仅使用单个域名的情况下从不同的服务器提供内容,则需要设置代理服务器来为您处理请求路由。我假设您的自定义配置文件页面必须从您的 EC2 实例提供。

Nginx 将接收所有请求,然后决定将它们发送到 Square Space 还是您的 Web 应用程序。请求将被反向代理到 Square Space 或您的应用程序,具体取决于 URL。

这类似于@smad 的答案,除了它对用户来说都是不可见的,恕我直言,这比将用户重定向到新域名更好。

示例步骤:

  • 设置 Nginx 服务器,创建两台虚拟主机 - 一台用于 my.example.com,一台用于 www.example.com
  • 在 Nginx 配置中创建两个上游 - 一个用于 Square Space,一个用于您的应用程序
  • 如果 URL 为“/”,则将 www.example.com 虚拟主机配置为反向代理连接到 Square Space 上游。否则,流量应代理到您的应用上游 [0]
  • 配置 my.example.com 虚拟主机以代理所有流量到您的应用上游

[0]如何通过 nginx 反向代理特定的 url?

于 2015-08-21T13:36:56.203 回答