如何使用nodejs使用多个子域和角度应用程序

时间:2017-08-14 19:30:38

标签: node.js angular amazon-web-services express

我希望能够为帐户持有者使用多个动态子域名,同时还拥有api子域名。基本上如下所示:

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

公共目标网页应用程序只是面向公众的应用程序的Angular 4应用程序,而SaaS应用程序本身就是实际应用程序,用于用户登录时,并根据其链接帐户映射到子域。

我正在使用NodeJS,Express 4,Angular 4和Angular CLI。我的目的是使用S3为客户端Angular应用程序提供服务,同时让NodeJS API在ElasticBeanstalk中运行。

这种配置可行吗?我在AWS上查看了虚拟主机,但这不一定是我正在寻找的,因为我需要能够在每次创建新帐户时注册新的子域。

1 个答案:

答案 0 :(得分:0)

我们使用AWS CloudFront通过route53进行通配符DNS映射。方法是将* .example.com映射到CloudFront分发,并在route53中为API使用覆盖记录集api.example.com,以便API指向您的快速Web服务器。步骤如下。

  • 当用户创建帐户时,您还可以在后端存储为其分配的子域(虚拟)。
  • 用户通过登录(login.example.com)页面登录后,他/她将被重定向到带有令牌或cookie的子域。
  • 如果单个用户需要在多个子网中,您可以选择在登录后选择或转到用户可以在内部切换的默认选项。

这里子域只是一个掩码,但实际的映射会从后端验证。因此,无论子域如果用户访问任何子域,Angular应用程序都会从​​其通配符加载,但将通过API请求进行验证,并且可以向用户显示相关消息。

此外,您可以将API连接到具有重定向行为的相同CloudFront分配(例如api / *),以便Angular应用程序不会出现CORS问题。