Nginx 配置负载均衡(详细版)

作者:1加1等于日期:2025/10/6

本文详细介绍关于Nginx 配置负载均衡,包括配置文件结构、多种负载均衡策略、如何修改均衡策略以及其他一些重要的配置。

本文目录

    • 一、、Nginx 配置负载均衡
      • 1. 配置文件结构
    • 二、Nginx 负载均衡策略
      • 1. 轮询(`默认策略`)
        • 2. 加权轮询
        • 3. IP 哈希
        • 4. 最少连接
    • 三、修改负载均衡策略
    • 四、Nginx 负载均衡其他配置
      • 1. 健康检查
        • 2. 会话保持
        • 3. 超时设置

一、、Nginx 配置负载均衡

1. 配置文件结构

Nginx 的负载均衡配置主要在 http 块内的 upstream 指令和 server 块内的 proxy_pass 指令中完成。

配置示例如下:

1http {
2    upstream backend_servers { # 后端服务器组
3        server 192.168.1.100:8080;
4        server 192.168.1.101:8080;
5    }
6
7    server {
8        listen 80;
9        server_name ecommerce.com;
10
11        location / {
12            proxy_pass http://backend_servers; # 将客户端的请求转发到指定的后端服务器组
13            proxy_set_header Host $host;
14            proxy_set_header X - Real - IP $remote_addr; # 设置请求头信息,确保后端服务器能获取客户端的真实信息。
15        }
16    }
17}
18

二、Nginx 负载均衡策略

1. 轮询(默认策略

Nginx 按照顺序依次将请求分发到后端服务器,每个服务器轮流处理请求。例如,第一个请求发送到 192.168.1.100:8080,第二个请求发送到 192.168.1.101:8080,以此类推。

1upstream backend_servers {
2    server 192.168.1.100:8080;
3    server 192.168.1.101:8080;
4}
5

2. 加权轮询

为每个后端服务器分配一个权重,权重越高的服务器处理的请求越多。在系统中,如果某台服务器的性能较好,可以为其分配较高的权重。

1upstream backend_servers {
2    server 192.168.1.100:8080 weight=2;
3    server 192.168.1.101:8080 weight=1;
4}
5

3. IP 哈希

根据客户端的 IP 地址进行哈希计算,将相同 IP 地址的请求总是发送到同一台后端服务器。这种策略适用于需要保持会话状态的场景,如系统中的用户登录状态。

1upstream backend_servers {
2    ip_hash;
3    server 192.168.1.100:8080;
4    server 192.168.1.101:8080;
5}
6

4. 最少连接

将请求发送到当前连接数最少的后端服务器,以确保各服务器的负载相对均衡。

1upstream backend_servers {
2    least_conn;
3    server 192.168.1.100:8080;
4    server 192.168.1.101:8080;
5}
6

三、修改负载均衡策略

如果需要修改负载均衡策略,只需在 upstream 块中修改相应的指令。

将轮询策略改为加权轮询:

1upstream backend_servers {
2    # 原轮询策略
3    # server 192.168.1.100:8080;
4    # server 192.168.1.101:8080;
5
6    # 修改为加权轮询策略
7    server 192.168.1.100:8080 weight=3;
8    server 192.168.1.101:8080 weight=1;
9}
10

修改完成后,需要重新加载 Nginx 配置文件:

1sudo nginx -s reload
2

四、Nginx 负载均衡其他配置

1. 健康检查

可以通过 server 指令的 max_failsfail_timeout 参数进行健康检查。当后端服务器在 fail_timeout 时间内出现 max_fails 次失败请求时,Nginx 会认为该服务器不可用,暂时不再向其发送请求。

1upstream backend_servers {
2    server 192.168.1.100:8080 max_fails=3 fail_timeout=10s;
3    server 192.168.1.101:8080 max_fails=3 fail_timeout=10s;
4}
5

2. 会话保持

在需要保持会话状态的系统中,可以使用 sticky 模块实现会话保持。例如,使用 sticky cookie 方式:

1upstream backend_servers {
2    sticky cookie srv_id expires=1h domain=ecommerce.com path=/;
3    server 192.168.1.100:8080;
4    server 192.168.1.101:8080;
5}
6

3. 超时设置

可以通过 proxy_connect_timeoutproxy_send_timeoutproxy_read_timeout 等指令设置连接超时、发送超时和读取超时时间,避免长时间等待无响应的后端服务器。

1server {
2    listen 80;
3    server_name ecommerce.example.com;
4
5    location / {
6        proxy_pass http://backend_servers;
7        proxy_connect_timeout 5s;
8        proxy_send_timeout 10s;
9        proxy_read_timeout 10s;
10    }
11}
12
← 上一篇 MySQL——表添加索引多种方式 记得点赞、关注、收藏哦! 下一篇 JUC小册——公平锁和非公平锁 →

Nginx 配置负载均衡(详细版)》 是转载文章,点击查看原文


相关推荐


UNIX下C语言编程与实践16-UNIX 磁盘空间划分:引导块、超级块、i 节点区、数据区的功能解析
迎風吹頭髮2025/10/4

一、UNIX 磁盘空间划分的核心逻辑:为何分为四个区域? UNIX 文件系统在格式化时,会将磁盘分区(如 /dev/sda1)划分为引导块(Boot Block)、超级块(Super Block)、i 节点区(Inode Area)、数据区(Data Area)四个连续的区域。这种划分并非随意设计,而是为了实现“系统启动-文件系统管理-数据存储”的完整功能链路,确保磁盘空间的有序管理和高效访问。 核心定位:四个区域各司其职且相互依赖——引导块负责“启动系统”,超级块负责“管理文件系统全局信息


DeepSeek V3.1-Terminus、阿里 Qwen3-Max、ChatGPT Pulse 同周登场!| AI Weekly 9.22-9.28
AI信息Gap2025/10/3

卷,卷起来了! 📢 本周 AI 快讯 | 1 分钟速览🚀 1️⃣ 🚀 DeepSeek 发布 V3.1-Terminus :Agent 性能提升 28%,HLE 测试跃升全球第三,仅次于 Grok 4 和 GPT-5,SimpleQA 准确率达 96.8%。 2️⃣ 💰 阿里云栖大会七连发 :3800 亿 AI 基建投资起步,万亿参数 Qwen3-Max 对标 GPT-5,AIME 25 和 HMMT 数学测试满分 100 分。 3️⃣ 🖥️ Kimi 推出 OK Compu


[linux仓库]深入解析Linux动态链接与动态库加载:理解背后的原理与技巧
egoist20232025/10/2

🌟 各位看官好,我是egoist2023! 🌍 Linux == Linux is not Unix ! 🚀 今天来学习Linux的指令知识,并学会灵活使用这些指令。 👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享更多人哦! 目录 进程如何看到动态库 进程间如何共享库 动态链接 编译器对可执行程序动手脚 动态库相对地址  程序如何和库具体映射 程序怎么进行库调用 全局偏移量表GOT 库间依赖(看看即可) 总结 进程如何看到动态库


Excel转PDF不分页
Bella_chene2025/10/2

将Excel转成PDF后,会发现存在分页的现象,理想是希望将一整个表格按实际情况缩放显示到PDF的一页上去 操作办法:打开excel表格,ctrl+P打开打印页面,点击页面设置,选择“将工作表调整为一页” 然后在右侧就可以看到效果,点击保存就可以了


ptyhon 基础语法学习(对比php)
come1123410/2/2025

非常棒!我们已经系统地对比了 Python 和 PHP 的所有主要数据类型。分类Python 类型对应 PHP 概念关键点基础intfloatstrintfloatstringPython 字符串格式化用f-string序列listtuple索引数组list可变(用[]),tuple不可变(用()映射dict关联数组键值对集合 (用{}集合set的结果元素唯一且无序特殊boolNoneboolnullFalse和None(首字母大写)这份表格可以作为您未来的速查手册。


音视频编解码全流程之用Extractor后Decodec
Everbrilliant8910/1/2025

本文介绍了音视频编解码流程中从媒体文件提取数据包后进行解码的两种实现方式:FFmpeg和MediaCodec。在FFmpeg部分,详细说明了交叉编译、数据包提取、解码器查找和分配、数据包解码等步骤,并提供了完整的代码实现。在MediaCodec部分,重点讲解了Extractor初始化、轨道选择、解码器初始化以及解码过程,同样包含详细代码示例。文章还对比了两种解码流程的异同,并展示了实际效果。所有代码均可在作者GitHub项目中查看。该系列文章为音视频开发提供了完整的流程参考,适合开发者学习音视频编解码技术。


【自动驾驶】自动驾驶概述 ⑤ ( 自动驾驶硬件概述 | 车载计算单元 IPC | 车辆线控系统 )
韩曙亮9/30/2025

一、车载计算单元 IPC1、车载计算单元 IPC 简介2、高性能计算3、高安全冗余4、高环境适应性二、车辆线控系统1、自动驾驶线控系统2、线控转向 ( Steer-by-Wire )3、线控制动 ( Brake-by-Wire )4、线控驱动 ( Throttle-by-Wire )5、线控换挡 ( Shift-by-Wire )6、线控悬挂 ( Suspension-by-Wire )7、线控系统举例说明


Kubernetes核心技术与集群部署项目
企鹅侠客2025/10/7

从集群搭建到核心功能应用的完整流程,内容涵盖集群部署、核心组件、资源管理、安全机制、持久化、监控与应用交付等关键技术。首先介绍 Kubernetes 的架构与特性,深入讲解 kubeadm 与二进制两种集群搭建方式,包括 etcd 集群部署、Master 与 Node 组件安装、证书签发及高可用集群实现。核心技术部分系统解析 Pod 的运行机制、调度策略、健康检查与资源限制,讲解 Deployment、StatefulSet、DaemonSet、Job 等控制器的应用场景。配置管理方面介绍 Co


前端路由的秘密:手写一个迷你路由,看懂Hash和History的较量
良山有风来2025/10/9

你是不是也遇到过这样的场景?开发单页面应用时,页面跳转后刷新一下就404,或者URL里带着难看的#号,被产品经理吐槽不够优雅? 别担心,今天我就带你彻底搞懂前端路由的两种模式,手把手教你实现一个迷你路由,并告诉你什么场景该用哪种方案。 读完本文,你能获得一套完整的前端路由知识体系,从原理到实战,再到生产环境配置,一次性全搞定! 为什么需要前端路由? 想象一下,你正在开发一个后台管理系统。传统做法是每个页面都对应一个HTML文件,切换页面就要重新加载,体验特别差。 而前端路由让你可以在一个页面内实


汽车软件开发的质量和安全管理流程
NewCarRen2025/10/10

摘要 软件开发流程是智能车辆(联网车辆和自动驾驶车辆)的核心,必须精心管理。自动化与联网功能的开发分别通过功能安全和网络安全开发流程实现,且需遵循相关标准,这些标准规定了流程、最佳实践、危害、威胁及管理策略。通过改进软件开发流程,智能车辆的人体工程学性能将得到提升。本文阐述了如何通过软件开发来管理实现自动化与联网功能的流程,以及是否可能改变管理团队的策略与软件开发流程。 1、引言 智能车辆是一种能够从周围环境中获取信息,并对信息进行处理,从而实现自主安全行驶且不造成任何伤害的车辆。此外,智

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0