2025年Nginx反向代理与负载均衡配置指南

· 阅读约需11分钟

一、Nginx反向代理基础配置

1. 基础反向代理配置

配置Nginx反向代理,将请求转发到后端应用服务器:

server {
    listen 80;
    server_name example.com;

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

通过proxy_pass指令转发请求,同时设置请求头,让后端服务获取真实客户端IP和协议信息。

2. 代理超时配置

优化代理超时参数,避免长请求超时:

proxy_connect_timeout 30s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;

分别设置连接超时、发送超时、读取超时时间,适配不同业务场景的请求时长。

3. 代理缓冲区配置

启用代理缓冲区,提升代理性能:

proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 4k;
proxy_busy_buffers_size 8k;

合理配置缓冲区大小,减少磁盘IO,提升高并发下的代理性能。

二、负载均衡策略配置

1. 轮询策略(默认)

默认轮询策略,按顺序将请求分配到后端服务器:

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

server {
    listen 80;
    location / {
        proxy_pass http://backend;
    }
}

适合后端服务器性能相近的场景,请求均匀分配。

2. 权重轮询策略

根据服务器性能设置权重,性能好的服务器分配更多请求:

upstream backend {
    server 192.168.1.10:8080 weight=3;
    server 192.168.1.11:8080 weight=2;
    server 192.168.1.12:8080 weight=1;
}

通过weight参数设置权重,权重越高分配的请求越多。

3. IP哈希策略

根据客户端IP哈希分配服务器,同一客户端始终访问同一后端服务器,解决session共享问题:

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

适合需要保持会话的业务场景,如用户登录状态保持。

4. 最少连接策略

将请求分配到当前连接数最少的后端服务器,动态负载均衡:

upstream backend {
    least_conn;
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
}

适合请求处理时长差异大的场景,自动均衡服务器负载。

三、HTTPS与SSL配置

1. SSL证书配置

配置HTTPS,启用SSL加密传输:

server {
    listen 443 ssl;
    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 ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
    ssl_prefer_server_ciphers on;
}

配置SSL证书路径,启用安全的TLS协议和加密套件,保障传输安全。

2. HTTP强制跳转HTTPS

将所有HTTP请求强制跳转到HTTPS:

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

通过301永久重定向,确保所有访问都走加密通道。

3. HSTS配置

启用HSTS,让浏览器强制使用HTTPS访问:

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

减少HTTP跳转次数,提升访问安全性和速度。

四、Nginx性能优化

1. 工作进程配置

根据CPU核心数设置工作进程数:

worker_processes auto;
worker_cpu_affinity auto;

auto参数自动匹配CPU核心数,每个进程绑定到特定CPU核心,提升性能。

2. 连接数配置

优化单进程最大连接数:

events {
    worker_connections 10240;
    use epoll;
    multi_accept on;
}

使用epoll事件模型,提升高并发下的连接处理能力。

3. 文件传输优化

启用高效文件传输:

sendfile on;
tcp_nopush on;
tcp_nodelay on;

启用sendfile零拷贝传输,减少内核态与用户态的数据拷贝,提升静态文件传输性能。

五、安全加固配置

1. 隐藏Nginx版本信息

隐藏服务器版本信息,减少攻击面:

server_tokens off;

禁止在响应头中显示Nginx版本号,避免攻击者针对特定版本漏洞攻击。

2. 限制请求大小

限制客户端请求体大小,防止大流量攻击:

client_max_body_size 10M;

根据业务需求设置最大请求体大小,避免恶意大请求占用服务器资源。

3. 访问控制

通过IP白名单限制敏感路径访问:

location /admin {
    allow 192.168.1.0/24;
    deny all;
}

仅允许内网IP访问后台管理路径,提升系统安全性。

六、总结

2025年Nginx仍是最主流的反向代理和负载均衡软件,掌握基础配置、负载均衡策略、HTTPS配置、性能优化和安全加固,可构建高性能、高可用、高安全的Web服务架构,支撑业务稳定运行。