← 返回首页

Nginx反向代理与负载均衡配置详解

前言

Nginx是目前最流行的高性能Web服务器和反向代理服务器。本文介绍Nginx作为反向代理和负载均衡器时的核心配置技巧。

一、基础反向代理配置

最简单的反向代理配置,将请求转发到后端服务:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        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;
    }
}

二、负载均衡策略

Nginx支持多种负载均衡算法:

2.1 轮询(默认)

upstream backend {
    server 192.168.1.10:3000;
    server 192.168.1.11:3000;
    server 192.168.1.12:3000;
}

2.2 权重分配

upstream backend {
    server 192.168.1.10:3000 weight=3;  # 处理3/6的请求
    server 192.168.1.11:3000 weight=2;  # 处理2/6的请求
    server 192.168.1.12:3000 weight=1;  # 处理1/6的请求
}

2.3 IP哈希(会话保持)

upstream backend {
    ip_hash;
    server 192.168.1.10:3000;
    server 192.168.1.11:3000;
}

三、SSL终止配置

在Nginx层终止SSL,后端服务使用HTTP通信:

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/key.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    # HSTS
    add_header Strict-Transport-Security "max-age=31536000" always;

    location / {
        proxy_pass http://backend;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

# HTTP到HTTPS跳转
server {
    listen 80;
    server_name example.com;
    return 301 https://$server_name$request_uri;
}

四、限流配置

防止恶意请求和DDoS攻击:

# 在http块中定义限流区域
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;

server {
    location /api/ {
        limit_req zone=api burst=20 nodelay;
        proxy_pass http://backend;
    }
}

五、WebSocket代理

Nginx代理WebSocket连接需要特殊配置:

location /ws {
    proxy_pass http://backend;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_read_timeout 86400;
}

六、常用优化参数

参数说明推荐值
worker_processes工作进程数auto(CPU核心数)
worker_connections每个进程最大连接数4096
keepalive_timeout连接超时时间65s
client_max_body_size最大上传文件大小按需求设置
gzip启用压缩on

七、总结

Nginx作为反向代理的核心优势:

  • 高性能:基于事件驱动模型,单进程可处理上万并发连接
  • 灵活配置:支持多种负载均衡策略和路由规则
  • SSL终止:集中管理证书,简化后端配置
  • 安全防护:限流、黑名单、请求过滤等
  • 静态资源服务:动静分离,提升整体性能