2017-08-14 47 views
-3

我希望能夠爲賬戶持有人使用多個動態子域名,同時還要擁有一個api子域名。本質上類似下面:如何通過nodejs使用多個子域名和角度應用程序

https://example.com --> Angular 4 public landing page app 
https://api.example.com --> NodeJS api 
https://otbs.example.com --> Angular 4 SaaS application 
https://test-account.example.com --> Angular 4 SaaS application 

公共登陸頁面的應用程序僅僅是面向公衆的應用程序中的角4的應用程序,而SaaS應用程序是實際的應用程序本身,當用戶登錄的,並映射到根據其關聯帳戶的子域名。

我正在使用NodeJS,Express 4,Angular 4和Angular CLI。我的意圖是使用S3服務客戶端Angular應用程序,同時讓NodeJS API在ElasticBean中運行。

這配置可以嗎?我在AWS上查看了虛擬主機,但這不一定是我正在尋找的,因爲每次創建新帳戶時都需要註冊新的子域。

+1

您可能想編寫一個shell腳本,以便在創建帳戶時調用此腳本 – Kai

+0

可能的[如何動態創建子域]的重複(https://stackoverflow.com/questions/5822117/how-to -dynamically-create-subdomains) –

+0

但是在AWS/Route53中沒有任何形式的分層通配符子域配置?像api.domain.com - > NodeJS EBS環境; **。domain.com - > Angular SaaS應用程序;然後沒有子域的東西只是指向公共的Angular應用程序。此外,我不認爲這是重複的,因爲這是AWS特有的,而不是PHP和.htaccess config +,這個問題並沒有試圖利用多個環境。謝謝 –

回答

0

我們使用AWS CloudFront和通過route53的通配DNS映射完成了此操作。該方法是將* .example.com映射到CloudFront分配,並使用覆蓋記錄集api.example.com作爲route53中的API,以便將API指向您的express webserver。步驟如下。

  • 當用戶創建一個帳戶,您還可以存儲在後端的分配給他們一個子域(虛擬)。
  • 用戶通過登錄頁面(login.example.com)登錄後,他/她將通過令牌或cookie重定向到其子域。
  • (可選)如果單個用戶需要位於多個子網中,您可以提供選項以在登錄後選擇或轉到用戶可以在內部切換的默認選項。

這裏的子域只是一個掩碼,但實際的映射從你的後端驗證。因此,無論用戶轉到任何子域,Angular應用程序都會加載自其通配符以來的子域,但將通過API請求進行驗證,並向用戶顯示相關消息。

此外,您還可以將API連接到具有重定向行爲的相同CloudFront分配(例如api/*),以便Angular應用程序不會收到CORS問題。

相關問題