我们在AWS ALB后面有一个angular应用程序。当请求被发送到某个路由example.com/balancer-route/...
时,负载均衡器会将流量定向到angular应用。但这意味着请求会在URI中带着额外的balancer-route
到达angular应用。我们需要忽略这些,以便正确地提供文件。
c#中是否有等价的app.UseBasePath
?在c#中,这将基本忽略请求的/balancer-route
部分,并正常地为端点提供服务。当基本路径不存在时,它也会继续处理请求。
我们知道这个问题可以通过NGINX解决,但是我们更喜欢基于应用程序的解决方案,在运行时将路径传递给应用程序。
使用重定向Angular路由的功能,你可以得到你想要的。以以下路由为例:
const routes: Routes = [
{ path: '', component: HomeComponent },
{ path: 'quotes', component: QuoteListComponent },
{ path: 'quote/:id', component: QuoteComponent }
];
你可以浏览http://some.com/
,http://some.com/quotes
和http://some.com/quote/1
,
和,您希望将流量从http://some.com/balancer-route
,http://some.com/balancer-route/quotes
和http://some.com/balancer-route/quote/1
分别重定向到第一个路由示例。
因此,我们将把所有的路由分组到一个带有子路由的对象中,并添加另一个重定向到分组所有路由的相同对象的路由
const routes: Routes = [
{
path: '', children: [
{ path: '', component: HomeComponent },
{ path: 'quotes', component: QuoteListComponent },
{ path: 'quote/:id', component: QuoteComponent }
]
}, {
path: 'balancer-route', redirectTo: ''
}
];