server {
listen 80;
server_name api.example.com;
location /user-service/ {
proxy_pass http://user-service-cluster/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /order-service/ {
proxy_pass http://order-service-cluster/;
proxy_set_header Host $host;
}
}
upstream user-service-cluster {
least_conn;
server 10.0.0.1:8080 weight=3;
server 10.0.0.2:8080;
server 10.0.0.3:8080 backup;
}
upstream order-service-cluster {
ip_hash;
server 10.0.0.4:8080;
server 10.0.0.5:8080;
}
upstream payment-service {
zone payment-service 64k;
server 10.0.0.6:8080;
server 10.0.0.7:8080;
# 被动健康检查
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
# 主动健康检查(需Nginx Plus)
health_check interval=5s uri=/health fails=3 passes=2;
}
upstream product-service {
server 10.0.0.8:8080 weight=90; # 旧版本
server 10.0.0.9:8080 weight=10; # 新版本
}
location / {
mirror /mirror;
proxy_pass http://primary-backend;
}
location = /mirror {
internal;
proxy_pass http://test-backend$request_uri;
}
server {
location / {
proxy_pass http://backend;
proxy_next_upstream error timeout http_500 http_502 http_503;
proxy_intercept_errors on;
error_page 500 502 503 =200 /fallback.json;
}
}
连接池优化:
upstream backend {
server 10.0.0.10;
keepalive 32; # 保持长连接
}
缓存静态内容:
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m;
location / {
proxy_cache my_cache;
proxy_pass http://backend;
}
压缩传输:
gzip on;
gzip_types application/json;
虽然Nginx功能强大,但在复杂微服务架构中通常与专业API网关(如Kong, Apigee)配合使用: - Nginx:负责L7流量路由和基础负载均衡 - API网关:处理认证、限流、监控等高级功能
关键监控指标: - 请求吞吐量 - 响应时间 - 后端服务健康状态 - 错误率
日志配置示例:
log_format microservices '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'upstream: $upstream_addr rt=$request_time';
Nginx在微服务架构中通过其高性能的反向代理和灵活的负载均衡能力,为系统提供了可靠的流量管理基础,是微服务网络层不可或缺的组件。