Nginx upstream模块指令用法详解

6 min read

Nginx是一款非常流行的Web服务器和反向代理服务器。它的upstream模块是处理反向代理请求的重要组件之一。这篇文章将介绍upstream模块的指令用法,以帮助您更好地理解如何使用Nginx反向代理。

upstream指令

upstream模块的核心是upstream指令。通过upstream指令,您可以定义一组服务器节点,以供反向代理请求时进行负载均衡。下面是upstream指令的基本语法:

upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}

在这个例子中,我们定义了一个名为backend的反向代理节点,它包含了三个服务器节点,即backend1.example.com、backend2.example.com和backend3.example.com。这些服务器节点将用于反向代理请求。

server指令

在upstream模块中,server指令用于定义一个服务器节点。每个server指令必须包含服务器的地址和端口号。下面是server指令的语法格式:

server address [parameters];

其中,address是服务器的地址和端口号,parameters是可选的策略参数。常用的策略参数包括weight、max_fails、fail_timeout和backup。

  • weight:指定服务器节点的权重,默认值是1。权重越高,服务器的流量分配比例就越高。
  • max_fails:指定在多少次失败之后将服务器节点标记为不可用,默认值是1。
  • fail_timeout:指定在多少秒内尝试失败后将服务器节点标记为不可用,默认值是10秒。
  • backup:将服务器节点标记为备份节点,只有在所有非备份节点都不可用时才会转发请求。

下面是一个包含策略参数的server指令的例子:

server backend1.example.com weight=3 max_fails=2 fail_timeout=30s;

这个server指令定义了一个服务器节点,它的地址是backend1.example.com,权重是3,如果在2次尝试后失败,则在30秒内标记为不可用,并且在恢复之前不会再次尝试。