• nginx负载均衡配置详解


    Nginx 的负载均衡功能是通过 upstream 模块来实现的,允许将客户端的请求分发到多个后端服务器,以达到分散负载、提高系统稳定性和响应速度的目的。下面是一些关于 Nginx 负载均衡配置的详细说明:

    1. 定义 Upstream Block

    首先,在 Nginx 配置文件(通常是 /etc/nginx/nginx.conf 或者 /etc/nginx/sites-available/default)中定义一个 upstream 块,用于指定一组后端服务器:

    Nginx

    1. 1upstream backend {
    2. 2 server backend1.example.com; # 直接指定IP或域名
    3. 3 server 192.168.1.10:8080 weight=2; # 指定权重,weight参数表示该服务器被选择的权重比
    4. 4 server 192.168.1.11:8080; # 默认权重为1
    5. 5 server backup.example.com backup; # 备份服务器,当其他服务器不可用时启用
    6. 6}

    2. 配置 Load Balancing 方法

    Nginx 支持多种负载均衡策略,包括但不限于:

    • 轮询(Round Robin):默认策略,请求按顺序逐一分配到不同的后端服务器,这是最简单的负载分配方式。
    • 加权轮询(Weighted Round Robin):在轮询基础上,每个服务器可以设定一个权重值,权重高的服务器会被分配到更多的请求。
    • 最少连接(Least Connections):将请求分发给当前活动连接数最少的服务器。
    • IP哈希(IP Hash):基于客户端IP地址的哈希值来分配请求,确保来自同一IP的客户端请求总能被同一台后端服务器处理,适用于需要session粘性的场景。
    • 通用哈希(Generic Hash):类似于IP哈希,但可以根据任意HTTP头或变量进行哈希计算。

    3. 在 Location 或 Server Block 中引用 Upstream

    server 块内的 location 配置中,使用 proxy_pass 指令引用上面定义的 upstream 名称,实现请求转发:

    Nginx

    1. 1server {
    2. 2 listen 80;
    3. 3 server_name example.com;
    4. 4
    5. 5 location / {
    6. 6 proxy_pass http://backend; # 引用上游服务器组
    7. 7 proxy_set_header Host $host;
    8. 8 proxy_set_header X-Real-IP $remote_addr;
    9. 9 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    10. 10 }
    11. 11}

    4. 高级配置

    • 健康检查:虽然Nginx本身不直接支持健康检查,但可以通过第三方模块(如ngx_http_upstream_check_module)或外部工具(如Heartbeat、Keepalived)实现。
    • 会话持久化:使用IP哈希或其他哈希策略来维持客户端会话的一致性。
    • 故障转移:通过在 upstream 中定义 backup 参数的服务器,确保在主服务器群不可用时有备用服务器接管请求。

    示例配置策略

    • 最少连接策略:需要安装并配置第三方模块,因为Nginx原生并不直接支持最少连接策略作为负载均衡算法。
    • 加权哈希策略:一般需要自定义脚本或逻辑来实现特定的哈希规则。

    完成配置后,同样需要使用 nginx -t 测试配置文件的正确性,并通过 nginx -s reload 重载配置让更改生效。请注意,配置的具体细节可能会根据Nginx版本和所使用的模块有所不同。

  • 相关阅读:
    Unsatisfied dependency expressed through bean property ‘sqlSessionTemplate‘;
    [第一篇]——跟我学习Docker 教程
    Leetcode 202 快乐数(HashSet,环形链表思想)
    科普:如何应用视觉显著性模型优化远控编码算法?
    阿里云国际站服务器开放端口详解!!
    Servlet基础
    短视频矩阵系统源头开发
    基于JAVA医院挂号管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
    中国剩余定理
    Shopee可以绑定大陆银行卡吗?Shopee收款方式选哪种?——站斧浏览器
  • 原文地址:https://blog.csdn.net/jkzyx123/article/details/139300573