当流量通过AWS应用程序负载平衡器时访问主机名
对于我们的应用程序,我们使用AWS应用程序负载平衡器(ALB)并具有用于HTTP:80的侦听器以将流量转发到TargetGroup。当流量通过AWS应用程序负载平衡器时访问主机名
我们设置我们的应用程序的方式是,我们将有一个数字子域,并需要从应用程序内访问这些原始子域(companyA.something.com)。目前,该应用程序会看到ALB本身的DNS名称。
到目前为止,我已经尝试设置子域(在Route53)几种方法:
- 创建子域名与ALIAS指向ALB DNS 名称
- 创建托管区域的子域添加记录NS记录的 子域的区域文件父域 http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingNewSubdomain.html
我发现这些都是巴斯cally相同,应用程序仍然只能看到ALB DNS名称。
有没有办法让我的用户在不覆盖ALB DNS名称的情况下获取原始子域?
由于提前, 亚伦
通常你配置一个CNAME是这样的:
api.example.com CNAME my-loadbalancer-1234567890.us-west-2.elb.amazonaws.com
但也有多种情况,选项,可能是最好的资源之一,对这个话题是这样的从AWS文章:
这是IMPO rtant一提的是,你可以创建CNAME资源记录只设置了子域 - Routing Traffic to an ELB Load Balancer
对于应用负载平衡器检查Host Conditions部分:
可以使用主机的条件来定义请求转发到规则基于主机头中的主机名(也称为基于主机的路由)的不同目标组。这使您可以使用单个负载平衡器来支持多个域。
您需要检查HTTP HOST header。你使用的框架应该已经能够为你处理。
是的,这正是我正在做的,我使用的是Sails .js框架并获取标题(http://sailsjs.com/documentation/reference/request-req/req-headers),但它显示的是ALB的完整DNS名称,而不是companyA.something.com – Aaron
@Aaron那么,这意味着你是试试通过ALB访问应用程序dns的名称不是您想要的域名。 ALB不会更改标题。那么你怎么称呼它? –
它应该已经按照你需要的方式工作了。 ALB的主机名应该只对应用程序可见,如果这也是浏览器地址栏中显示的主机名。您没有使用未提及的任何内容,例如CloudFront(或Cloudflare),对不对? –