Skip to content

yijiuping/nginx-as-apigateway

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

将NGINX打造成功能强大的API网关

API网关作为现代应用的流量入口,重要程度可想而知,其核心功能包括:认证鉴权、请求校验、URI重写、响应压缩、响应缓存、TLS卸载、流量控制、流量调度、日志监控、指标监控等。

在数亿的NGINX部署实例中,有约30%的实例被部署为API网关,其功能全面,性能强大,是API网关的绝佳选择,本项目将演示如何利用NGINX打造一个属于自己的API网关,并实现API网关的核心功能。

按照常规的软件产品研发流程,我们将按以下几个核心步骤完成API网关的开发:

功能架构设计

规划API网关的功能特性,明确API网关的项目范围。

技术架构设计

设计API网关的技术架构,通过数据面、控制面、管理面分离的方式实现API网关的功能、性能、安全性、稳定性、高可用等。

配置结构设计

根据API网关的功能特性范围,选择合适的NGINX的功能模块和配置指令实现API网关的功能,并规划扩展性和可维护性,按照功能领域划分目录结构和配置结构。 更多细节可参考配置设计

配置模型设计

根据配置设计抽象出面向用户的功能配置模型,简化用户配置难度,并实现可视化、自动化配置能力。 更多细节可参考模型设计

配置模板开发

基于配置设计和模型设计,使用模板语言开发配置模板,最终能实现:配置模板+配置模型+配置数据=最终配置的能力。 更多细节可参考模版开发

功能集成测试

实现基于配置模型的自动化数据驱动测试能力,可批量自动化回归验证API网关的功能正确性。 更多细节可参考模版开发

项目结构

  • config-design: 基于NGINX的API网关配置设计;
  • config-model:基于Java实现的配置模型参考,可被视为API网关的管理面;
  • config-templates:基于Go Template和Confd实现的API网关配置模板;
  • backend-demo:基于Springboot实现的后端测试服务;

集成测试依赖

About

Deploying NGINX as an API Gateway

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published