Nginx 反向代理 + 6 种负载均衡策略

一、前言

Nginx 是目前最常用的高性能反向代理、负载均衡服务器,常用于微服务集群、Web 项目集群分发。本文整理 Nginx 反向代理 + 6 种负载均衡策略 完整配置,复制即可使用,适合生产环境直接部署。

二、Nginx 反向代理通用基础配置

1、反向代理必备请求头

做负载均衡反向代理,必须携带以下 header,否则后端拿不到真实 IP 和域名。

nginx

复制代码
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_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;

2、基础整体架构

  • upstream:定义后端服务集群
  • server:监听端口,做反向代理转发

三、6 种 Nginx 负载均衡策略 完整配置

策略 1:默认轮询(Round Robin)

特点:默认规则,请求按顺序依次分发,平均分配,无会话保持。

nginx

复制代码
upstream backend_server {
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
}

server {
    listen 80;
    server_name lb.test.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;
    }
}

策略 2:权重负载均衡 weight

特点:权重值越高,被分配的请求越多;适合后端服务器配置性能不一样的场景。

nginx

复制代码
upstream backend_server {
    server 192.168.1.10:8080 weight=5;
    server 192.168.1.11:8080 weight=3;
    server 192.168.1.12:8080 weight=2;
}

策略 3:IP 哈希 ip_hash

特点 :同一客户端 IP 永远分配到同一台后端节点,解决会话丢失、登录失效问题。

nginx

复制代码
upstream backend_server {
    ip_hash;
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
}

策略 4:最少连接 least_conn

特点 :自动把请求分发到当前连接数最少的服务器,适合后端处理速度参差不齐的场景。

nginx

复制代码
upstream backend_server {
    least_conn;
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
}

策略 5:URL 哈希 hash $request_uri

特点:根据请求 URL 做哈希,相同 URL 固定访问同一节点,适合静态资源缓存、文件服务。

nginx

复制代码
upstream backend_server {
    hash $request_uri;
    hash_method crc32;
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
}

策略 6:Fair 智能负载均衡(第三方模块)

特点 :根据后端响应时间 自动分配,响应越快分到的请求越多;需要额外安装 ngx_http_upstream_fair_module 模块。

nginx

复制代码
upstream backend_server {
    fair;
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
}

四、upstream 常用参数详解

nginx

复制代码
# 标记为备用节点,主节点挂了才启用
server 192.168.1.12:8080 backup;

# 标记节点永久下线
server 192.168.1.10:8080 down;

# 健康检查:最大失败3次,30秒内不再转发
server 192.168.1.10:8080 max_fails=3 fail_timeout=30s;

五、Nginx 常用命令

bash

运行

复制代码
# 检查配置语法
nginx -t

# 重载配置(不重启服务)
nginx -s reload

# 启动、停止、重启
systemctl start nginx
systemctl stop nginx
systemctl restart nginx

# 查看日志
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log

六、总结

  1. 轮询:默认平均分配
  2. 权重:配置性能不同用
  3. ip_hash:需要会话保持、登录状态
  4. least_conn:后端处理速度不一致
  5. url_hash:静态资源、缓存服务
  6. fair:按响应时间智能调度(需第三方模块)
相关推荐
IT大白鼠4 分钟前
彭大帅的AI运维助手——自然语言管理 Linux 集群与网络设备——第 5 篇 · 多模态与虚拟化AI 能「看」图:多模态与虚拟化管理
linux·运维·人工智能
阿狗童鞋27 分钟前
Nginx反向代理与负载均衡实战指南
运维·nginx·负载均衡
IT大白鼠30 分钟前
彭大帅的AI运维助手——自然语言管理 Linux 集群与网络设备——第 2 篇 · 安全守规矩的 AI:分级安全管控是灵魂
linux·运维·人工智能
闭包不眠32 分钟前
端侧AI能省多少服务器钱:把账换成字节算
运维·服务器·图像处理·人工智能·计算机视觉
风华同学34 分钟前
免密SSH登录Ubuntu
linux·运维·ubuntu
꯭自꯭闭꯭35 分钟前
达梦守护集群手工切换及故障切换
linux·运维·服务器·数据库
哈__35 分钟前
日志散在多台服务器怎么查?用 Promtail + Loki + Grafana 搭一套集中检索平台
运维·服务器·grafana
CHENKONG_CK37 分钟前
恶劣工况下 RFID 赋能喷涂产线自动化分拣与作业
运维·网络·人工智能·自动化·汽车·rfid·rfid
wdfk_prog1 小时前
Wi-Fi Direct 教程 04:Interface 协议子系统初始化——WPA/EAPOL、WPS、DPP/NAN、GAS 与 P2P callback
android·运维·服务器·ubuntu·p2p·wps·wifi-direct
云飞云共享云桌面1 小时前
有个10人的SolidWorks设计团队,服务器什么配置合适,如何落地
运维·服务器·3d·自动化·电脑·制造