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:按响应时间智能调度(需第三方模块)
相关推荐
搜狐技术产品小编20233 分钟前
破局与重构:纯端侧 Android 自动化引擎的尝试与未来推演
android·运维·重构·自动化
三十..16 分钟前
Ceph分布式存储核心技术精要与运维实践指南
运维·分布式·ceph
tianyuanwo26 分钟前
Jenkins × Gerrit 集成:自动触发构建的全流程解析
运维·servlet·jenkins
顾默@1 小时前
双系统Ubuntu18.04升级22.04,安装docker进行openclaw安装
运维·docker·容器
杨充1 小时前
1.1 数据编码设计原理
linux·运维·网络·底层原理·数据编码
一只鹿鹿鹿1 小时前
信息化项目管理规范(参考Word文件)
java·大数据·运维·开发语言·数据库
wanhengidc2 小时前
双线服务器有哪些优点?
运维·服务器
蜀道山老天师2 小时前
Docker Compose 多容器编排实战:LNMP、Tomcat 集群、云桌面、Portainer、Zabbix 一键部署
运维·docker·容器·tomcat·zabbix
jscxy52062 小时前
ospf综合实验
运维·服务器·网络
apcipot_rain3 小时前
计科八股20260529——连接协议连接线程池、模块拆解模块通信、WebSocket
运维·服务器·网络·八股