Linux/Python学习论坛-京峰教育

 找回密码
 立即注册

一键登录:

搜索
热搜: 活动 交友 discuz
查看: 1909|回复: 0

Nginx参数深入理解

[复制链接]

217

主题

331

帖子

4711

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4711
QQ
发表于 2015-3-2 17:34:46 | 显示全部楼层 |阅读模式
Nginx常用配置参数有upstream,主要用于均衡后端多个实例:
Nginx 的upstream目前支持5种算法分配方式:
1) 轮询(默认rr)
每个请求按时间顺序逐一分配到后端不同的服务器,如果后端某台服务器down掉,自动剔除,待恢复自动添加上。
2) Weight权重
指定轮询权重,权重越高,处理的请求就越多,weight和访问比率成正比,用于后端服务器性能不均的情况。
3) ip_hash
每个请求根据访问的IP的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,一般用于登录会话。
4) fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。  
5) url_hash(第三方)
upstream的 fail_timeout和max_fails参数是用来判断负载均衡upstream中的某个server是否失效。
在fail_timeout的时间内,nignx与upstream中某个server的连接尝试失败了max_fails次,则nginx会认为该server已经失效。在接下来的 fail_timeout时间内,nginx不再将请求分发给失效的server。
例如在nginx.conf里面配置如下的tdt_app均衡:
upstream tdt_app {
    server   10.10.1.11:8080 weight=1 max_fails=2fail_timeout=30s;
    server   10.10.1.12:8080 weight=1 max_fails=2fail_timeout=30s;
}
Tdt_app均衡两台后端JAVA服务,在30秒内nginx会与后端的某个server通信检测,如果检测连接失败2次,则Nginx会认为该server已经失效,然后踢出转发列表,然后在接下来的30s内,nginx不再讲请求转发给失效的server。

fail_timeout设置的时间对响应时间没影响,这个响应时间是用proxy_connect_timeout和proxy_read_timeout来控制的。
proxy_connect_timeout : Nginx与后端服务器连接的超时时间,发起握手等候响应超时时间。
proxy_read_timeout:连接成功后_等候后端服务器响应时间,其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)。
proxy_send_timeout :后端服务器数据回传时间,在规定时间之内后端服务器必须传完所有的数据。
keepalive_timout:一个http产生的tcp连接在传送完最后一个响应后,还需要等待多少秒后,才关闭这个连接。

京峰Linux教育创始人之一,只为有梦想的人!任何事情只要去行动,就会收获结果!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|京峰教育,只为有梦想的人 ( 京ICP备15013173号 )

GMT+8, 2021-3-6 05:50 , Processed in 0.023571 second(s), 12 queries , Apc On.

快速回复 返回顶部 返回列表