1. 基本反向代理配置

Nginx 反向代理的核心配置是通过 proxy_pass 指令将客户端请求转发至后端服务器。

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend_server;
        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_pass:指定后端服务器地址(可以是 IP、域名或 upstream 组)。

  • proxy_set_header:修改请求头,确保后端服务器获取真实客户端 IP 等信息。


2. 负载均衡方案

Nginx 可以通过 upstream 模块实现多台后端服务器的负载均衡。

upstream backend {
    server 192.168.1.101:8080 weight=3;
    server 192.168.1.102:8080;
    server 192.168.1.103:8080 backup;
}

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend;
    }
}

负载均衡策略:

  • 轮询(默认):请求按顺序分发到各服务器。

  • 加权轮询:通过 weight 参数分配不同权重。

  • IP 哈希:使用 ip_hash 确保同一客户端始终访问同一后端。

  • 最少连接:使用 least_conn 优先选择连接数最少的服务器。

  • 备份服务器:通过 backup 标记备用服务器,仅在主服务器不可用时启用。


3. HTTPS 反向代理

Nginx 可代理 HTTPS 请求,并支持 SSL 终止(在 Nginx 解密后转发明文至后端)。

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://backend_server;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

关键配置:

  • ssl_certificatessl_certificate_key:指定 SSL 证书路径。

  • X-Forwarded-Proto:告知后端请求的原始协议(HTTP/HTTPS)。


4. 缓存加速

Nginx 可缓存后端响应,减少重复请求对后端服务器的压力。

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;

server {
    location / {
        proxy_cache my_cache;
        proxy_pass http://backend_server;
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 404 1m;
    }
}

缓存参数说明:

  • proxy_cache_path:定义缓存存储路径及内存区域大小。

  • proxy_cache_valid:设置不同状态码的缓存时间。


5. WebSocket 代理

Nginx 支持代理 WebSocket 连接,需额外配置头信息。

server {
    location /ws/ {
        proxy_pass http://backend_server;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

关键参数:

  • UpgradeConnection 头:确保 WebSocket 协议升级成功。


6. 安全加固

  • 限制访问:通过 allow/deny 控制 IP 访问。

  • 速率限制:使用 limit_req 防止 DDoS 攻击。

  • 隐藏头信息:移除 Server 等敏感头。

location / {
    proxy_pass http://backend_server;
    proxy_hide_header X-Powered-By;
    limit_req zone=req_limit burst=10;
}

总结

Nginx 反向代理功能强大,适用于负载均衡、HTTPS 代理、缓存加速等场景。合理配置可提升性能、安全性和可用性。