Nginx的upstream配置技巧【20210809】

发表于 2021-08-10 13:34:44
阅读 438

介绍

介绍

Nginx是一个反向代理软件,大部分的网站都采用Nginx作为网站/平台的服务器软件。Nginx除了可以直接作为web服务器使用外,更多的情况是通过反向代理将请求转发给上游服务器。

配置上游服务器可以使用upstream进行设置,通过upstream可以实现服务的负载均衡规则,可以提高服务器的高可用性。

今天福哥要带着大家把Nginx的upstream的配置技巧深度的学习一番。

语法

基本语法

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;
}

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;
}

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;
}

proxy_connect_timeout

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

proxy_connect_timeout 3s;

proxy_next_upstream_tries

这个proxy_next_upstream_tries是一个upstream反向代理的重试次数,简单说就是如果请求server出错的次数达到了proxy_next_upstream_tries的次数的话,即使没有达到max_fails的次数,即使后面还有没有尝试过的server,都不会再继续尝试了,而是直接报错。

proxy_next_upstream_tries 3;

proxy_next_upstream_timeout

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

proxy_next_upstream_timeout 60s;

backup

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

backup的server不同于其他server,平时是不承载请求的,所以它应该是比较空闲的状态,应急再合适不过了~~

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;
    server  tflinux_php-fpm-tfphp_3:9000 backup;
}

示例

福哥给出一个示例,这是TFLinux的TFPHP的配置参数,包括了今天学习的全部知识。

proxy_connect_timeout 3s;
proxy_next_upstream_timeout 60s;
proxy_next_upstream_tries 3;

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;
    server  tflinux_php-fpm-tfphp_3:9000 backup;
}

home/topic/2021/0810/14/29ea8d5936d29ffb4651d0f26da517b0.png

总结

今天福哥给童鞋们介绍了Nginx的upstream的配置技巧,upstream的默认参数是不够我们使用的,学会这些配置才能够搭建一个稳定的服务器环境。