当流量通过AWS应用程序负载平衡器时访问主机名

问题描述:

对于我们的应用程序,我们使用AWS应用程序负载平衡器(ALB)并具有用于HTTP:80的侦听器以将流量转发到TargetGroup。当流量通过AWS应用程序负载平衡器时访问主机名

我们设置我们的应用程序的方式是,我们将有一个数字子域,并需要从应用程序内访问这些原始子域(companyA.something.com)。目前,该应用程序会看到ALB本身的DNS名称。

到目前为止,我已经尝试设置子域(在Route53)几种方法:

  1. 创建子域名与ALIAS指向ALB DNS 名称
  2. 创建托管区域的子域添加记录NS记录的 子域的区域文件父域 http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingNewSubdomain.html

我发现这些都是巴斯cally相同,应用程序仍然只能看到ALB DNS名称。

有没有办法让我的用户在不覆盖ALB DNS名称的情况下获取原始子域?

由于提前, 亚伦

+0

它应该已经按照你需要的方式工作了。 ALB的主机名应该只对应用程序可见,如果这也是浏览器地址栏中显示的主机名。您没有使用未提及的任何内容,例如CloudFront(或Cloudflare),对不对? –

通常你配置一个CNAME是这样的:

api.example.com CNAME my-loadbalancer-1234567890.us-west-2.elb.amazonaws.com 

但也有多种情况,选项,可能是最好的资源之一,对这个话题是这样的从AWS文章:

https://aws.amazon.com/blogs/devops/introducing-application-load-balancer-unlocking-and-optimizing-architectures/

这是IMPO rtant一提的是,你可以创建CNAME资源记录只设置了子域 - Routing Traffic to an ELB Load Balancer

对于应用负载平衡器检查Host Conditions部分:

可以使用主机的条件来定义请求转发到规则基于主机头中的主机名(也称为基于主机的路由)的不同目标组。这使您可以使用单个负载平衡器来支持多个域。

+0

我按照你所描述的将它切换到CNAME,但似乎应用程序仍然从主机名获得ALB的DNS名称.... – Aaron

+0

检查主机条件部分'http://docs.aws.amazon.com/elasticloadbalancing /最新/应用/负载均衡器,监听器。html#host-conditions' – nbari

+0

该链接似乎不适合我:( – Aaron

您需要检查HTTP HOST header。你使用的框架应该已经能够为你处理。

+0

是的,这正是我正在做的,我使用的是Sails .js框架并获取标题(http://sailsjs.com/documentation/reference/request-req/req-headers),但它显示的是ALB的完整DNS名称,而不是companyA.something.com – Aaron

+0

@Aaron那么,这意味着你是试试通过ALB访问应用程序dns的名称不是您想要的域名。 ALB不会更改标题。那么你怎么称呼它? –