使用一个Angular 7应用程序的多个域和子域

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (21)

我有一个想要建立自己的网站的想法。我一直在阅读文档,文章和教程。但我无法完全找到我需要的答案。

情况:

我在AWS Lightsail有一个项目(包括:Angular 7,Node,MongoDB,Nginx,Express)。我有多个带有动态子域名的域名,用于区分客户/品牌员工的信息。多个域是其中的一部分,以便于导航和通信。

例如:

client1.domain1.com/some/info/
client1.domain2.com/some/info/
..etc.

建立:

我已经通过Nginx配置了子域和域,使其可以使用通配符子域以及声明的子域和域。动态子域的配置如下:

server {
  listen 80;
  listen [::]:80;
  server_name ~^((?<sub>.*)\.)(?<domain>[^.]+)\.com$;
  root /opt/bitnami/nginx/html/$domain/$sub;
  try_files $uri $uri/ /index.html$is_args$args;
}

以此目录输出:

/opt/bitnami/nginx/html/domain1/client1/ 

(client1在那里只是为了测试。它不是理想情况下的目录。而且domain1和client1应该只在url中作为域和子域本身。而不是作为目录)

思考:

理想情况下,它将是每个域指向的一个系统,并且内容根据域名和客户端进行区分。我想到了以下几点:

  • 在每个域上都有一个单独的应用程序 但是,这会产生大量重复的代码,并且可以维护/进行更改。
  • 为每个域都有一个组件。但后来我不知道如何使路由工作。
  • 在一个项目中有多个应用程序。但Angular使用JavaScript在1个HTML文件中部署所有内容。如何在那里进行路由工作?
  • 等等

但似乎没有人像我想象的那样工作。我该如何正常工作?我如何能够以有效,可扩展和安全的方式使用多个域来提供应用程序?

提问于
用户回答回答于

为什么不使用具有多个域绑定的单个应用程序,然后在应用程序中使用路由来隔离内容。假设没有客户特定的安全信息被硬编码到角度应用程序中,您应该能够使用与Web api配对的Angular Routeing创建一个安全的应用程序,以产生您描述的最终结果。

client1.domain1.com/client/1/info/ client1.domain2.com/client/2/info/

clientx.domainx.com - >全部解析到您的应用

/ client / - >路由到角度组件

const routes: Routes = [
  {
    path: '',
    children: [ 
       { path: 'client/:id', component: dynamicClientComponent },
     ]
  }
];

在角度客户端组件中,您可以从URL获取客户端ID,并从Web服务/ api中检索客户端特定的内容

 constructor(
    private formBuilder: FormBuilder,
    private route: ActivatedRoute,
    private router: Router,
    private clientService: CientService,

  ) {
    route.params.subscribe(params => {
         this.id = this.route.snapshot.params.id;
         if (this.id) {
             this.clientService.getById(this.id).subscribe(
              (record) => {
                 this.ClientInfo = record;
                   //update UI accordingly

         })
    };
}

这是一个工作示例,它比我的代码摘录更好地说明了这一点 https://stackblitz.com/edit/router-pillar1-demo-final?file=src%2Fapp%2Fapp.module.ts

扫码关注云+社区

领取腾讯云代金券