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:按响应时间智能调度(需第三方模块)
相关推荐
fish_xk2 小时前
Linux开方工具
linux·运维·服务器
techdashen4 小时前
Pingora 的开源——Cloudflare 基于 Rust 搭建的用于替换Nginx的网络框架
nginx·rust·开源
中科三方4 小时前
输入域名后无法访问?教你快速区分域名解析问题与服务器问题
运维·服务器
internet Boy4 小时前
桌面运维面试常见问题及标准答案(完整版)
运维
liuluyang5305 小时前
linux kernel CONFIG_KCMP解析
linux·运维·服务器
Koma_zhe5 小时前
【Ansible开源自动化运维工具】别再手动装监控了,Ansible能让上百台机器同时搞定Node Exporter(1)
运维·开源·ansible
tsyjjOvO6 小时前
Nginx 从入门到实践:反向代理、负载均衡与动静分离
nginx·负载均衡
StackNoOverflow6 小时前
Nginx 入门教程(安装、反向代理、负载均衡、动静分离)
运维·nginx·负载均衡