在一个域中提供两个不同的角度应用程序,并在路径中使用通配符

时间:2017-09-13 02:55:24

标签: angularjs nginx angular2-routing nginx-location

说我有一个用AngularJS编写的Dog应用程序,我现在正在添加一个用Angular4编写的新Grooming子应用程序

现在我有一个nginx服务/api到后端php服务器,重写了/api前缀(所以它不知道它在子路径中)和/由前端AngularJS应用程序提供服务。这是两个不同的应用程序,每个应用程序位于自己的服这个现在工作正常。

现在我们正在添加一个用ng4编写的Grooming应用程序,它应该像主应用程序的模块一样服务,但是来自完全不同的服务器目录,例如/dogs/315/grooming

如果我对匹配location /dogs/315/grooming的位置进行硬编码,则会加载ng4 index.html并尝试投放该应用,但如果我使用正则表达式location ~ ^/dogs/([0-9]+)/grooming,则会跳过它并加载{{} 1}}位置。

Grooming应用程序需要像/这样的网址来设置上下文,然后它会使用其他网址片段来实现自己的功能。

/dogs/315/*块中的try_files $uri $uri/ $uri.html /index.html会继续将子应用程序发送回父级。

这里有一些示例片段,修饰部分已被重写并改变了许多方式,我只是将它作为一个例子:

location ~ ^/dogs/([0-9]+)/grooming

完全贴在梳理部位;尝试了很多事情,我可能会走错路。

1 个答案:

答案 0 :(得分:0)

将答案作为评论发布,因为我需要格式化 请尝试以下

location ~ ^/dog/([0-9]+)/grooming/ {
    alias /home/forge/dog-grooming.greatapp.com/current/dist/;
    index index.html;
    try_files $uri $uri/ =404;
}