问题
我可以让 Nginx 在 AKS k8s 内调用另一个微服务,然后再路由到请求的 api 吗?- 目标是加快请求(更少的跃点)并简化构建和部署(更少的服务)。
解释
在我们当前部署的 Azure AKS (Kubernetes) 集群中,我们有一个额外的服务,我希望用 nginx 替换。它是一个路由微服务,在执行路由之前调用身份 API。
Authorization
原因是我想像的一个常见原因,我们通过一些预定义的标头(标准标头,或者有时一些用于调试令牌和模拟的定制标头)接收某种身份验证令牌,我们从使用这些预定义的标头将 API 路由到身份 API 并获得用户身份对象作为回报。
然后,我们将这个基本用户身份对象传递给微服务,以便它们可以快速轻松地访问用户和角色。
一个简短的解释是:
- Nginx 接收请求,卸载 SSL 并路由到请求的服务。
- 路由 API 获取授权标头并调用 Identity API。
- 身份 API 验证授权信息并返回授权错误(当身份验证失败时)或序列化的用户身份对象。
- 路由器 API 要么返回那里,然后,如果失败,要么路由到请求的微服务(通过破解请求路径),并将用户身份对象作为标头附加。
- 例如,在 .NET Core 的情况下,请求的微服务可以将该用户身份对象转换为声明主体。
显然有合并 Router.API 和 UserIdentity.API 的选项,但保持关注点分离似乎是一个更好的举措。我只想删除 Route.API,以保持这种分离,但让 nginx 为我完成这项工作。