一、Nginx 和 Gateway 的关系:是替代还是协作?
不是替代关系,而是协作关系。
1. Nginx 的角色(通常在最外层)
-
反向代理 & 负载均衡:将前端请求分发到多个后端服务或网关实例。
-
静态资源服务:部署前端(如 Vue/React 打包后的静态文件)。
-
SSL 终止:处理 HTTPS,减轻后端压力。
-
安全防护:如防 DDOS、限流、WAF(配合模块)。
-
高可用入口:作为整个系统的统一入口。
2. API Gateway 的角色(在微服务层前面)
-
服务路由 :根据路径将请求转发到具体的微服务(如
/user/**
→ user-service)。 -
认证鉴权:统一处理 JWT、OAuth2 等。
-
限流熔断:防止某个服务被压垮。
-
日志监控:统一记录请求日志、链路追踪。
-
协议转换:如 REST → gRPC。
二、典型架构图(高可用 + 高并发)
用户 → DNS → [Nginx LB (HA)] → [API Gateway 集群] → [微服务集群]
↑ ↑
(静态资源) (动态路由/鉴权/限流)
组件说明:
-
Nginx 集群(主备或双活):使用 Keepalived + VIP 实现高可用。多台 Nginx 前置负载均衡(可再加 LVS/F5 或云 SLB)。
-
API Gateway 集群:多实例部署,注册到 Nginx 或服务发现(如 Nacos/Eureka)。支持横向扩展,应对高并发。
-
微服务集群:每个服务多实例部署,通过注册中心发现。
三、配置示例
1. Nginx 配置(反向代理到 Gateway)
# nginx.conf 或 conf.d/gateway.conf
upstream gateway_backend {
server 192.168.1.10:8080 weight=5; # Gateway 实例1
server 192.168.1.11:8080 weight=5; # Gateway 实例2
# 可配置健康检查
keepalive 32;
}
server {
listen 80;
server_name api.yourdomain.com;
# 静态资源(前端)
location / {
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html;
}
# 动态请求代理到网关
location /api/ {
proxy_pass http://gateway_backend;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# WebSocket 支持
location /ws/ {
proxy_pass http://gateway_backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
2. Spring Cloud Gateway 配置(application.yml)
spring:
cloud:
gateway:
routes:
- id: user-service
uri: lb://user-service # 从注册中心负载均衡
predicates:
- Path=/api/user/**
filters:
- StripPrefix=2 # 去掉 /api/user 前缀
- id: order-service
uri: lb://order-service
predicates:
- Path=/api/order/**
filters:
- StripPrefix=2
# 全局限流(Redis + Token Bucket)
redis-rate-limiter:
replenishRate: 10 # 每秒补充10个令牌
burstCapacity: 20 # 桶容量20
# 服务发现(如 Nacos)
nacos:
discovery:
server-addr: 192.168.1.100:8848
四、如何实现高可用 & 高并发?

五、常见误区
❌ 只用 Nginx 不用 Gateway→ 适合简单系统,但微服务多了难以维护路由和鉴权。
❌ 只用 Gateway 不用 Nginx→ Gateway 也能做负载均衡,但 Nginx 更成熟,适合做最外层防护和静态资源服务。
✅ 推荐:Nginx + Gateway 协同工作
-
Nginx 做"门卫"和"前台"
-
Gateway 做"调度中心"和"安全审计"
六、进阶建议
-
使用云原生方案:如 Kubernetes + Ingress (Nginx Ingress Controller) + Istio/Envoy Gateway。
-
自动化部署:配合 CI/CD 工具(Jenkins/GitLab CI)自动发布 Gateway 配置。
-
灰度发布:在 Gateway 层实现基于 Header 的流量切分。
-
性能压测:使用 JMeter 或 wrk 测试 Nginx + Gateway 的吞吐能力。
总结
-
✅ 前端用 Nginx 部署静态资源
-
✅ 后端用 API Gateway 做统一入口、路由、鉴权
-
✅ Nginx 反向代理到 Gateway 集群,实现高可用
-
✅ 通过负载均衡、缓存、异步、集群化实现高并发
文章转载自: ++古渡蓝按++
原文链接: 高可用高并发微服务架构设计:Nginx 与 API Gateway 的协同实践 - 古渡蓝按 - 博客园
体验地址: JNPF快速开发平台