# 使用Nginx Plus或OpenResty实现动态上游
upstream backend {
zone backend 64k;
server 10.0.0.1:8080 resolve;
server 10.0.0.2:8080 resolve;
keepalive 32;
}
# 结合服务发现
resolver 10.0.0.1 valid=10s;
upstream payment_service {
least_conn; # 最少连接数
server svc-payment-1:8080;
server svc-payment-2:8080;
}
upstream report_service {
hash $request_uri consistent; # 一致性哈希
server svc-report-1:8080;
server svc-report-2:8080;
}
upstream inventory_service {
server svc-inventory-1:8080 slow_start=30s;
server svc-inventory-2:8080;
# 主动健康检查
health_check uri=/health interval=5s
fails=3 passes=2;
}
location ~ ^/api/(?<service>[^/]+)/(?<path>.*) {
proxy_pass http://$service/$path$is_args$args;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Service $service;
# 熔断配置
proxy_next_upstream error timeout http_502 http_503;
proxy_next_upstream_timeout 2s;
proxy_next_upstream_tries 2;
}
# 连接池配置
proxy_http_version 1.1;
proxy_set_header Connection "";
keepalive_timeout 75s;
keepalive_requests 1000;
# 缓冲区优化
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 16k;
proxy_busy_buffers_size 32k;
nginx.http.request.count
nginx.upstream.response.time
nginx.http.status.4xx/5xx
nginx.connections.active
# 实时监控工具
ngxtop -l access.log
# 压力测试
wrk -t4 -c100 -d30s https://api.example.com
# 配置检查
nginx -T # 测试并输出完整配置
# 请求限制
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=100r/s;
# 头部安全
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header Content-Security-Policy "default-src 'self'";
# TLS优化
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: microservices-ingress
annotations:
nginx.org/rewrites: "serviceName=frontend rewrite=/"
nginx.ingress.kubernetes.io/affinity: "cookie"
spec:
rules:
- host: api.company.com
http:
paths:
- path: /orders
pathType: Prefix
backend:
service:
name: order-service
port:
number: 80
- path: /inventory
backend:
service:
name: inventory-service
port:
number: 80
通过以上策略,Nginx可以在微服务架构中实现高效、可靠的反向代理和负载均衡功能,同时保持配置的灵活性和可维护性。