分享实录 | 将 NGINX 打造成功能强大的 API 网关(上)
原文作者:易久平
原文链接:分享实录 | 将 NGINX 打造成功能强大的 API 网关(上)
NGINX 唯一中文官方社区 ,尽在 nginx.org.cn
大家好,很高兴加入此次 NGINX 深潜之旅。接下来我将给大家分享如何将 NGINX 打造成 API 网关。今天我将从以下两个部分进行分享,第一部分给大家梳理一下什么是 API 网关,第二部分着重给大家分享一下为什么 NGINX 比较适合做 API 网关。
1.什么是 API 网关
上图是 Gartner 在 2022 年发布的调查报告,它展示了 2019 年到 2022 年各企业 API 使用情况变化。目前各企业使用 API 的情况发生了很大变化,无论是自研 API、使用公有云 API,或者是使用合作伙伴 API 的企业都有了很大的增长,最令我们感到惊讶的是,有很多企业预计未来会对外提供自己研发的 API,这说明 API 在经济环境中的发展变得越来越重要。
这也可以理解为现在企业发展已经离不开 API,因为企业数字化转型,导致 API 越来越重要。正是因为数字化转型,我们的应用架构也在不断的发生变化,从单体架构到微服务架构,从微服务架构到无服务架构,也衍生出了 SaaS 、PaaS 等各类公有云平台。
随着数字化转型的进程不断推进,API 在技术演进过程中的角色和形态也在不断发生变化。早期 API 更主要的作用是用来做信息访问,在微服务架构里面,API 的作用更多是为了加速创新,让业务迭代速度更快,更能匹配业务发展的节奏。
现在,API 被赋予了更重要的作用——提升用户体验,尤其是在数字化转型进程中,当越来越多的生活轨迹放到线上后,用户体验变得非常重要,这也导致了 API 无处不在,无论是公有云,私有云,还是边缘云,在不同的环境下都可能有 API 的存在,这也导致 API 的管理变得更加艰难。
无论是什么形式的服务,无论是用什么语言开发的微服务,亦或是单体应用服务,它可能对外提供了一个 API,在其中有可能存在一个 API 网关来承接 API 入口的职责。客户端请求从通过互联网再经过 API 网关,再把请求转发到真正提供 API 行为的业务服务端。
那么 API 网关在这个过程充当什么样的角色?我们可以这样理解,API 网关主要核心职责就是作为 API 对外的统一入口。有了 API 网关,我们可以把某一类业务领域的通用能力上移到 API 网关上。API 网关具体的功能职责如下:
-
身份验证:验证是否允许客户端访问
-
访问授权:验证客户端可以访问哪些资源
-
流量加解密:TLS 卸载、mTLS
-
流量控制:通过限流限速、限带宽、请求校验、内容改写等来控制通过网关的流量
-
流量调度:基于请求及客户端按条件匹配或比例路由请求到后端服务
-
日志记录:创建日志以监控和查看 API 流量
-
指标监控:对 API 流量做精细化指标监控实时观测运行状态
总结起来,API网关的核心功能主要包括以下几个方面:
-
对 API 调用进行身份验证:使用 Basic Auth, OAuth 2.0/OIDC, JSON Web Tokens (JWT), 或自有认证方式进行身份认证;
-
控制资源访问权限:使用 JWT、API Keys 或其他授权方式来管理访问权限;
-
路由与管理 API 流量:支持内容改写、限流、七层转发等流量路由与控制策略;
-
保护后端服务:使用 TLS 加密流量、管理 CORS 策略、允许特定请求方法或部署 WAAP;
-
获取 API 流量的可观测性:自定义日志格式,并导出监控指标到 Prometheus, Grafana, Splunk, Datadog 等;
-
支持常见协议:API 网关支持 HTTP/2、gRPC、WebSocket 等常见协议。
另外 API 网关除了核心功能需求外,还需要考虑非核心功能需求的情况,比如:
-
配置灵活:网关配置灵活,可快速支持关键业务场景;
-
与平台无关:可部署在任何地方 - 在云中、本地或边缘;
-
DevOps 友好:可轻松集成到现有 CI/CD 流水线中;
-
流量可见性:访问和导出指标和日志以观测和监控 API 流量。
对于 API 网关每个人都有自己的理解,针对实际应用部署情况,API 网关在某些场景下叫流量网关,某些场景下叫微服务网关或者业务网关,今天的分享更多的是从应用场景来考虑这个问题。
目前来看,API 网关大部分的应用情况可能都围绕以下几种:单体应用、微服务、微服务 BFF、K8s 集群、K8s 集群 KIC。
在选择的时候,除了考虑应用架构的形态以外,还需考虑作为一个 API 网关,或者是所谓流量网关,它到底需要代理什么样的后台应用,它是跨业务系统调度,还是需要跨 K8s 群进行调度,这个时候选择是不一样的。另外还需考虑 API 网关属于哪些团队进行维护,它到底是属于运维团队还是应用团队?
API 网关在某种层面上职责不一样,比如流量网关更多被赋予的是全局稳定和流量调度职责,但是业务网关或者微服务网关注的是某个业务能否更好地对外提供业务服务,当然也存在两者叠加的这种情况。所以今天的分享更多的是针对于 API 网关需要实现某些功能,具体的部署情况需要我们针对实际的业务进行考虑。
2.为什么 NGINX 比较适合做 API 网关
先来看一组数据,目前为止 NGINX 有 4 亿线上部署实例,为 Web Server 的第一位。根据 NGINX 社区调查显示,97% 的用户部署 NGINX 开源版本,但是大家忽略了一点,有 30% 的用户是将 NGINX 作为 API 网关进行部署。
因为 NGINX 提供开源免费版和商业闭源版,从功能层面讲,除了数据面的能力以外,还有控制面和管理面的能力。NGINX 有很多的官方模块和配置指令,同时还有很多的第三方开源模块,这些指令可以作用在不同的领域,有可能放在 HTTP 上下文下面,也可能放在 Server 内,也可能放在 Location 下面。
这么多的指令,再加上不同的上下文,它在排列组合以后可以做出很多的场景。这些场景其实主要包括了以下几种,如:软负载、反向代理、API 网关、 Web 服务缓存,还有安全等等。
NGINX 的性能十分优秀,根据第三方机构 GigaOm 的测试数据显示,NGINX 的延迟和吞吐能力相比于其他的产品有很大的优势。这是因为 NGINX 的源代码结构和优化做的十分不错,多进程架构也十分优秀,官方更倾向于使用原生的 C 语言开发模块和功能,总体来说 NGINX 的性能十分优秀。
众所周知,作为流量入口,API 网关的流量请求,无论是面向客户端的统计,还是面向服务端的统计都十分重要,可能都需要去关注它的稳定性和可观测性。随着版本的更替,NGINX 提供了超过 200 个监控指标,这些监控指标可以通过 Prometheus 式的格式发布并且被采集,使得它们可以通过 Grafana 统一的展示。
除上述安全性功能以外,NGINX 还支持 WAAP 安全防护体系,也就是 Web 应用与 API 的防护。NGINX 提供了 NGINX APP Protect 模块,它可以同 NGINX 一起部署,简单理解为只要有 NGINX 部署的地方就可以实现安全防护能力叠加。
整个 NAP 是按照 WAAP 的思路构建的。WAAP 是基于传统的WAF,扩展了 7 层的 DoS 防护和机器人防护,也扩展了 API 安全的能力。
NGINX 唯一中文官方社区 ,尽在nginx.org.cn
更多 NGINX 相关的技术干货、互动问答、系列课程、活动资源:
开源社区官网:https://www.nginx.org.cn/

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
工信部:不得为未备案 App 提供网络接入服务
工业和信息化部近日印发《工业和信息化部关于开展移动互联网应用程序备案工作的通知》(以下简称《通知》),组织开展移动互联网应用程序(简称App)备案工作,要求在中华人民共和国境内从事互联网信息服务的App主办者,应当依照《中华人民共和国反电信网络诈骗法》《互联网信息服务管理办法》等规定履行备案手续,未履行备案手续的,不得从事App互联网信息服务。 根据工作安排,2023年9月至2024年3月底,《通知》发布前开展业务的App向其住所所在地省级通信管理局履行备案手续。2024年4月至2024年6月底,电信主管部门将组织对App备案情况开展监督检查,对仍未履行备案手续的App依法进行处置。 《通知》明确提出,App主办者、网络接入服务提供者、应用分发平台、智能终端生产企业应当建立健全违法违规信息监测和处置机制,发现法律、行政法规禁止发布或者传输的信息,应当立即停止传输该信息,采取消除等处置措施,防止信息扩散,保存有关记录,并向电信主管部门报告,依据电信主管部门要求进行处置。网络接入服务提供者、应用分发平台、智能终端生产企业不得为未履行备案手续的App提供网络接入、分发、预置等服务。 相关阅读...
- 下一篇
深入浅出流批一体理论篇——数据架构的演进
一、前大数据时代 人人都知道罗马不是一天建成的,但没人告诉过你罗马是怎样一天天建成的。你看见罗马时,它就已经是罗马了。当我进阿里时,正是这样的感觉。 我没有经历过阿里数据架构(包括平台工具)从0到1的过程。我相信很多阿里老员工也没有未见得全经历过。因为从行业视角来看,这是一个长达二三十年的过程,阿里作为先行者本身也是摸着石头过河。很多年轻一些的阿里员工看到当前的架构设计,他们的感受大概就是:“不就该是这样吗?不然还能怎样?” 鲁迅就有话说了:“从来如此,便对么?” 好在我前些年辗转了多家公司,有幸在一线接触到了国内外各种不同业务不同类型的数据团队及架构,再加上自己翻阅资料,才基本梳理清楚了数据架构的发展脉络。 BI系统 现在人们身处大数据时代的洪流之中,数据产品日新月异,令人应接不暇。阿里还出过一本书——《大数据之路》,里面详细介绍了大数据从采集到消费等各个环节的方法论和案例。那么,在大数据时代之前,人们也进行数据分析吗?那时的人们又使用的是怎样的工具和方法论呢? 这就要介绍一位熟悉又陌生的老朋友——BI系统。说它熟悉,是因为数据侧的同学几乎天天都会和BI系统打交道,比如阿里的FBI。...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 2048小游戏-低调大师作品
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器