配置反向代理与负载均衡

以下是一个完整的 Nginx 配置示例,实现反向代理与负载均衡功能。假设需要将请求分发到三个后端服务器(backend1.example.combackend2.example.combackend3.example.com),并采用轮询(round-robin)负载均衡策略。

upstream backend_servers {
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com;
}

server {
    listen 80;
    server_name yourdomain.com;

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

upstream 块定义了后端服务器组,默认使用轮询策略。可通过权重或不同策略调整流量分配:

upstream backend_servers {
    server backend1.example.com weight=3;
    server backend2.example.com;
    server backend3.example.com backup;
}

proxy_set_header 指令确保后端服务器能获取原始请求信息。X-Forwarded-For 保留客户端真实 IP,Host 传递原始域名。

可选负载均衡策略

除默认轮询外,Nginx 支持其他策略:

upstream backend_servers {
    least_conn;                # 最少连接数优先
    server backend1.example.com;
    server backend2.example.com;
}

或使用 IP 哈希保持会话粘性:

upstream backend_servers {
    ip_hash;
    server backend1.example.com;
    server backend2.example.com;
}

健康检查配置

添加健康检查确保只将请求路由到健康节点:

upstream backend_servers {
    server backend1.example.com max_fails=3 fail_timeout=30s;
    server backend2.example.com;
}

max_fails 设定失败次数阈值,fail_timeout 定义暂停路由时间。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐