当前位置:首页 > 技术文章 > 正文内容

Nginx 负载均衡配置教程以及 upstream 详解

arlanguage5个月前 (12-11)技术文章52

一、通用配置

在 Nginx 中配置负载均衡非常简单。通过定义一个 upstream 块,你可以指定多个后端服务器用于负载均衡。下面是一个基本的例子:

http {
  
    upstream myapp {
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }
  
    server {
        listen 80;
        server_name www.example.com;
      
        location / {
                proxy_pass http://myapp;
                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_set_header X-Forwarded-Proto $scheme;
        }
    }
}

详细说明:

  • upstream 块: 定义了一个名为 myapp 的负载均衡组,包含了三台后端服务器。
  • server 块: 用于处理进入的请求,并将它们代理到 upstream 定义的服务器组。
  • proxy_pass 指令: 将请求转发到 myapp 这个 upstream 组。
  • proxy_set_header 指令: 设置了一些头信息以保持客户端的原始请求信息。

二、负载均衡算法

Nginx 支持多种负载均衡算法,默认使用 轮询(Round Robin),选择适合应用的负载均衡策略可以帮助提升性能并确保高可用性。你可以通过在 upstream 块中指定不同的策略来更改这个行为:

  • 轮询 (round-robin): 默认策略,轮流将请求分配给每个服务器。
  • 权重 (weight): 为服务器分配不同权重,例如:
upstream myapp {
     server backend1.example.com weight=3;
     server backend2.example.com weight=1;
}
  • 最少连接 (least_conn): 将新请求分配给当前活动连接数最少的服务器。
upstream myapp {
    least_conn;
    server backend1.example.com;
    server backend2.example.com;
}
  • IP 哈希 (ip_hash): 基于客户端 IP 地址进行哈希,从而使同一客户端的请求总是转发到同一台后端服务器。
upstream myapp {
    ip_hash;
    server backend1.example.com;
    server backend2.example.com;
}

三、upstream 参数详解

在 Nginx 中,upstream 块支持多种配置选项,用于管理与后端服务器的连接,包括超时设置、失败重试次数等。下面是一个详细的 upstream 配置示例:

http {

    upstream myapp {
        # 定义后端服务器及其权重
        server backend1.example.com weight=3 max_fails=3 fail_timeout=30s;
        server backend2.example.com weight=2 max_fails=3 fail_timeout=30s;
        server backend3.example.com backup;

        # 设置空闲连接数
        keepalive 16;

        # 连接超时时间
        connect_timeout 5s;

        # 响应超时时间
        send_timeout 10s;
        proxy_read_timeout 30s;
    }
  
    server {
      # 省略
        .....
    }
}

配置详解:

  • server 指令
  1. weight=<number>: 指定服务器的权重,影响负载均衡分配。
  2. max_fails=<number>: 在指定时间内允许的最大失败次数。如果超过这个值,服务器将被标记为不可用。
  3. fail_timeout=<time>: 服务器被标记为不可用的时间长度。在这段时间后会重新尝试连接。
  • backup 参数

该参数将当前服务器标记为备用服务器,仅在主服务器都不可用时才使用。

  • keepalive

保持活动连接数,以减少建立连接的开销,提高性能。

  • connect_timeout

设置与后端服务器建立连接的超时时间。

  • send_timeout

定义发送请求到后端服务器时的超时时间。

  • proxy_read_timeout

设置从后端服务器接收响应的超时时间。

注:以上配置可以根据应用需求进行调整,以便优化网络延迟和提高服务可靠性。确保在生产环境中仔细测试这些超时时间和重试策略,以找到最佳的设置。

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/68.html

分享给朋友:

“Nginx 负载均衡配置教程以及 upstream 详解” 的相关文章

Nginx常用配置与命令 nginx命令详解

Nginx特点高并发、高性能;模块化架构使得它的扩展性非常好;异步非阻塞的事件驱动模型这点和 Node.js 相似;相对于其它服务器来说它可以连续几个月甚至更长而不需要重启服务器使得它具有高可靠性;热部署、平滑升级;完全开源,生态繁荣;Nginx作用Nginx 的最重要的几个使用场景:静态资源服务,...

CentOS安装nginx

安装nginx第一步,查看是否安装,没有我们就开始安装:rpm -qa| grep nginx第二步,安装依赖包。(1)gcc安装。由于nginx是c语言写的,因此在安装nginx前需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,则需要安装:yum install gcc-c...

php培训都学什么?有哪些课程?

PHP入门虽然比较容易简单,但是对于零基础学员来讲,想要学到精髓,并不是一件容易的事情,越到后面学起来越累,因此,最快最便捷的方法就是参加培训,不仅可以快速掌握入门,还能够学到精髓之处,那么PHP培训都有哪些课程?下面我们以六星教育的php培训课程为例来为大家讲解:第一阶段:动态网站开发的三个方面1...

Nginx如何配置正向代理:一步步教你轻松上手

Nginx作为一个高性能的HTTP和反向代理服务器,广泛应用于各类网站和服务中。然而,很多人可能不知道,Nginx同样可以配置为正向代理。今天我们就来详细讲解一下如何配置Nginx作为正向代理,让你的网络访问更加灵活便捷。什么是正向代理?正向代理是指客户端通过代理服务器访问目标服务器的过程。简单来说...

linux上将大文件切割成小文件之split命令

说明:很多场景需要拷贝或传输文件时,如果我们需要拷贝的文件太大的话,就需要想办法将其分成小个文件进行拷贝,然后载重新合并。今天介绍 split 命令格式:split [OPTION] [INPUT [PREFIX]]一、压缩并切割使用tar命令进行压缩,使用split进行切割实例:# 压缩 ]# t...