2017-09-25 157 views
0

對於我們的應用程序,我們使用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),對不對? –

回答

0

通常你配置一個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

0

您需要檢查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不會更改標題。那麼你怎麼稱呼它? –