系统相关
首页 > 系统相关> > nginx-我真的需要Web服务器以及API-微服务架构中的网关

nginx-我真的需要Web服务器以及API-微服务架构中的网关

作者:互联网

在我们的高素质主持人基于各种原因拒绝这个问题之前,我想强调一下,这主要是为了重新设计当前项目.
因此,在我当前的python应用程序中,我正在使用gunicorn和nginx.现在,当我们迁移到云时,这让我觉得我真的需要nginx或其他任何Web服务器.
在我们的云架构中,我们将使用API​​网关,我们计划通过该API网关:1)通过Internet公开api 2)负载平衡3)身份验证和授权
网络服务器还有其他目的无法通过api-gateway来实现吗?api-gateway只是网络服务器的另一个奇特名称吗?

解决方法:

我将通过解决术语“ API网关”来回答. API网关是外观设计模式的实现.顾名思义,这种模式仅意味着将某个组件放在其他组件的前面.在Web应用程序的上下文中,网关API是位于Web服务/端点前面的模块.但是,与您所描述的相反,身份验证和授权通常最适合作为体系结构中单独的模块/微服务.这是设置网关API服务的一种方法:

┌──────────────┐         (1)          ┌────────────────┐
│              ├─── authenthicate ──> │                │
│  gateway API │                      │ authentication │
│              │ <──── yes/no ────────┤                │
└───────┬───┬──┘                      └────────────────┘
        │   │         (2)
        │   └─────────────────────┐
    (3) │                         │
        │                         │
┌───────┴──────┐          ┌───────┴───────┐
│              │          │               │
│ web services │          │ authorization │
│              │          │               │
└──────────────┘          └───────────────┘

在这种设计下,您的所有组件现在都具有一个用于登录/身份验证的点.身份验证模块基本上只是说是或否,这也意味着您只需要维护一组逻辑或代码即可处理所有身份验证.这看似微不足道,但想像一下这将为谷歌或微软这样的公司节省多少工作,该公司拥有数十种可公开获得的产品和服务.请注意,实际上,您的身份验证可能是分层的或分层的.例如,您可能具有1FA和2FA身份验证级别,或其他级别.

发生的下一步是网关API将访问授权模块,以找出传入的请求是否具有足够的权限来访问所请求的端点/服务.如果不是,则网关将拒绝该请求.如果是这样,那么它将允许请求访问相应的Web服务.

意识到一旦身份验证和授权不起作用,网关API基本上就是一个大型路由器,它将传入的请求映射到您的一个或多个应用程序中的某个特定端点.值得一提的这种微服务设计的另一个好处是,如果您不得不更改身份验证提供程序或授权逻辑,则只需更改该模块.假设您明智地编写了接口代码,则应用程序中所需的更改应该很小.

Here is a link到Spring的Cloud Gateway框架文档.在这种情况下,将使用Spring Boot应用程序作为网关API的实现.

标签:nginx,microservices,gunicorn,api-gateway
来源: https://codeday.me/bug/20191108/2006066.html