searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Nginx的upstream模块配置详解

2023-10-07 08:18:25
97
0

Nginx除了可以直接作为web服务器使用外,更多的情况是通过反向代理将请求转发给上游服务器。Nginx模块一般被分成三大类:handler、filter和upstream。利用handlerfilter,可以使nginx轻松完成任何单机工作。而upstream,将使nginx将跨越单机的限制,完成网络数据的接收、处理和转发。通过upstream可以实现服务的负载均衡规则,可以提高上游服务器的高可用性。

  1. 基本语法

upstream的基本语法如下,一个upstream需要设置一个名称,这个名称可以在server里面当作proxy主机使用

upstream default {
    server  php-fpm-tfphp:9000;
}

一个upstream可以设置多个server,通常情况下Nginx会轮询每一个server,从而达到最基本的负载循环效果。

upstream default {
    server  tflinux_php-fpm-tfphp_1:9000;
    server  tflinux_php-fpm-tfphp_2:9000;
}
  1. max_fails

max_fails是最多出错数量,可以为每一个server设置一个max_fails,如果请求server发生了错误则max_fails会加一,如果请求server错误次数达到了max_fails后,Nginx会标记这个server为故障状态,后面就不会再去请求它了。

默认情况下,max_fails的次数是1次。

upstream default {
    server  tflinux_php-fpm-tfphp_1:9000 max_fails=5;
    server  tflinux_php-fpm-tfphp_2:9000 max_fails=3;
}
  1. fail_timeout

fail_timeout是故障等待超时时间,前面说过了max_fails是请求server错误次数,如果达到了max_fails次数之后server会被标记为故障状态,那么多长时间会重新尝试呢?这个fail_timeout就是这个时间了,在达到max_fails次数之后server进入故障状态,而后在fail_timeout时间之后会被重新标记为正常状态。

默认情况下,fail_timeout的时间是10秒。

upstream default {
    server  tflinux_php-fpm-tfphp_1:9000 max_fails=5 fail_timeout=100;
    server  tflinux_php-fpm-tfphp_2:9000 max_fails=3 fail_timeout=60;
}
  1. proxy_connect_timeout

proxy_connect_timeout是连接超时时间,如果连接不到就会报错

proxy_connect_timeout 3s;
  1. proxy_next_upstream_timeout

proxy_next_upstream_timeout是一个upstream反向代理的故障等待时间,简单说就是无论upstream内部如何进行重试,所有花费的时间加在一起达到了proxy_next_upstream_timeout时间的话,就会直接报错,不会再继续尝试了。

proxy_next_upstream_timeout 60s;
  1. backup

backup为备用服务器参数,可以为一个upstream设置一个backup的server,在生产server全部都出问题之后,可以自动切换到备用server上,为恢复服务争取时间。

backup的server不同于其他server,平时是不承载请求的,所以它应该是比较空闲的状态,主要做应急处理使用

 

0条评论
0 / 1000
Mr. 油
89文章数
0粉丝数
Mr. 油
89 文章 | 0 粉丝
原创

Nginx的upstream模块配置详解

2023-10-07 08:18:25
97
0

Nginx除了可以直接作为web服务器使用外,更多的情况是通过反向代理将请求转发给上游服务器。Nginx模块一般被分成三大类:handler、filter和upstream。利用handlerfilter,可以使nginx轻松完成任何单机工作。而upstream,将使nginx将跨越单机的限制,完成网络数据的接收、处理和转发。通过upstream可以实现服务的负载均衡规则,可以提高上游服务器的高可用性。

  1. 基本语法

upstream的基本语法如下,一个upstream需要设置一个名称,这个名称可以在server里面当作proxy主机使用

upstream default {
    server  php-fpm-tfphp:9000;
}

一个upstream可以设置多个server,通常情况下Nginx会轮询每一个server,从而达到最基本的负载循环效果。

upstream default {
    server  tflinux_php-fpm-tfphp_1:9000;
    server  tflinux_php-fpm-tfphp_2:9000;
}
  1. max_fails

max_fails是最多出错数量,可以为每一个server设置一个max_fails,如果请求server发生了错误则max_fails会加一,如果请求server错误次数达到了max_fails后,Nginx会标记这个server为故障状态,后面就不会再去请求它了。

默认情况下,max_fails的次数是1次。

upstream default {
    server  tflinux_php-fpm-tfphp_1:9000 max_fails=5;
    server  tflinux_php-fpm-tfphp_2:9000 max_fails=3;
}
  1. fail_timeout

fail_timeout是故障等待超时时间,前面说过了max_fails是请求server错误次数,如果达到了max_fails次数之后server会被标记为故障状态,那么多长时间会重新尝试呢?这个fail_timeout就是这个时间了,在达到max_fails次数之后server进入故障状态,而后在fail_timeout时间之后会被重新标记为正常状态。

默认情况下,fail_timeout的时间是10秒。

upstream default {
    server  tflinux_php-fpm-tfphp_1:9000 max_fails=5 fail_timeout=100;
    server  tflinux_php-fpm-tfphp_2:9000 max_fails=3 fail_timeout=60;
}
  1. proxy_connect_timeout

proxy_connect_timeout是连接超时时间,如果连接不到就会报错

proxy_connect_timeout 3s;
  1. proxy_next_upstream_timeout

proxy_next_upstream_timeout是一个upstream反向代理的故障等待时间,简单说就是无论upstream内部如何进行重试,所有花费的时间加在一起达到了proxy_next_upstream_timeout时间的话,就会直接报错,不会再继续尝试了。

proxy_next_upstream_timeout 60s;
  1. backup

backup为备用服务器参数,可以为一个upstream设置一个backup的server,在生产server全部都出问题之后,可以自动切换到备用server上,为恢复服务争取时间。

backup的server不同于其他server,平时是不承载请求的,所以它应该是比较空闲的状态,主要做应急处理使用

 

文章来自个人专栏
存储专栏
89 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0