Kong vs. NGINX:从反向代理到云原生网关的全景对比
1. 写在前面
- NGINX:高性能 Web 服务器 / 反向代理的“瑞士军刀”。
- Kong:基于 NGINX + LuaJIT 的云原生 API 网关,专注 API 生命周期管理。
一句话区别:
“NGINX 是高速公路,Kong 是高速+收费站+监控大屏+服务区一体化。”
2. 架构层次
维度 | NGINX | Kong |
---|---|---|
进程模型 | 单/多进程 + epoll | NGINX Worker + LuaJIT VM |
配置方式 | nginx.conf 静态文件 | PostgreSQL / Cassandra / Declarative YAML |
动态生效 | reload(毫秒级) | Admin API / 热插拔插件(零重启) |
插件体系 | 编译进模块 | Lua 插件 + Go/JS 外部插件(100+ 官方插件) |
3. 功能矩阵
场景 | NGINX 做法 | Kong 做法 |
---|---|---|
反向代理 | proxy_pass | service + route CRUD |
限流 | limit_req / limit_conn | rate-limiting 插件(秒级、分布式) |
身份认证 | 手写 Lua 或 auth_request | jwt / key-auth / oauth2 插件 |
负载均衡 | upstream + ip_hash | Consul / K8s Service Discovery |
灰度发布 | split_clients 手动切流量 | canary 插件 + 权重/Header |
可观测 | stub_status + log | Prometheus / Datadog / Zipkin 插件 |
服务网格 | 需 Nginx Plus + NJS | Kuma(Kong 官方 Service Mesh) |
4. 性能基准(2024-06 测试)
硬件:16 vCPU / 32 GB / 万兆网卡
场景:纯反向代理,1 KB 回包,1000 并发
指标 | NGINX 1.25 | Kong 3.6 |
---|---|---|
RPS | 118 k | 108 k |
99% 延迟 | 1.8 ms | 2.1 ms |
CPU 占用 | 75 % | 80 % |
Kong 损耗 ≈ 8%,换来动态路由与插件能力,在 API 网关场景可接受。
5. 运维体验
任务 | NGINX | Kong |
---|---|---|
新增路由 | 改 conf + reload | POST /services |
日志格式 | 手写 log_format | 插件自动注入 JSON |
证书热更新 | 需 lua-resty-core | cert-manager + Kong Ingress |
水平扩展 | 手动 upstream | K8s CRD 自动发现 |
6. 云原生生态
NGINX
- NGINX Plus:商业版 + NJS
- NGINX Ingress Controller(K8s)
Kong
- Kong Ingress Controller(CRD)
- Kong Mesh(Service Mesh)
- Konnect(SaaS 托管)
7. 选型建议
需求 | 推荐 |
---|---|
纯静态 / 高并发 Web | NGINX |
需要动态路由、插件、DevOps | Kong |
微服务 / K8s 环境 | Kong Ingress |
预算敏感、简单反向代理 | NGINX OSS |
企业级 API 生命周期 | Kong Enterprise |
8. 一句总结
“NGINX 提供极致性能,Kong 在性能可接受的前提下,把 API 治理、插件生态、云原生体验 做到极致。
选谁,取决于你要一条高速公路,还是一座智能化服务区。”