DNS托管不同主机上的公共和Web应用程序

时间:2015-08-20 20:25:42

标签: amazon-web-services dns amazon-route53 aws-ec2

这是我的设置。

  1. 由squarespace.com(www.example-domain.com)主办的公共网站
  2. Web应用程序(AWS EC2 / ELB),我希望通过同一个域提供。 (my.example-domain.com)
  3. 自定义个人资料页面可用www.example-domain.com/username
  4. 我的问题是如何设置DNS来实现这一目标?如果不能通过DNS做任何建议?我面临的问题是,如果squarespace.com正在处理www.example-domain.com流量,我怎么能只为部分网址部分处理它。也许我会在错误的情况下解决这个问题。不过。

2 个答案:

答案 0 :(得分:2)

这两个首先是好的。如您所述,(1)与纯DNS配置不兼容(3),因为www的{​​{1}}必须配置为单个端点。

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

  • example-domain.com上使用squarespace.com域并将您的sqsp.example-domain.com域配置到自定义Web服务器,在该服务器上配置根(www)以重定向(HTTP 300)到{ {1}}。除了浏览器地址外,它对用户来说非常透明。
  • 相同但在/设置包含sqsp.example-domain.com的整页HTML iframe。

iframe方法是一种“不太干净”的方式,而Google则是构建您意见的解决方案。

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

答案 1 :(得分:0)

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

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

这类似于@ smad的回答,除了它对用户都是不可见的,IMHO比将用户重定向到新的域名要好。

示例步骤:

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

[0] how to reverse proxy via nginx a specific url?