前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx ngx_http_upstream_module模块详解(九)

Nginx ngx_http_upstream_module模块详解(九)

作者头像
咻一咻
发布2020-05-29 15:33:25
1.2K0
发布2020-05-29 15:33:25
举报
文章被收录于专栏:咻一咻咻一咻

ngx_http_upstream_module

模块功能

用于将多个服务器定义成服务器组,而由proxy_pass, fastcgi_pass等指令进行引用

代码语言:javascript
复制
1、upstream name { ... } 
    定义后端服务器组,会引入一个新的上下文默认 
    调度算法是wrr 
    可用位置: http 
    upstream httpdsrvs{ 
        server ... 
        server ... 
        ... 
    }

2、server address [parameters]; 
    在upstream上下文中server成员,以及相关的参数; 
    可用位置:upstream 
    address的表示格式:
        unix:/PATH/TO/SOME_SOCK_FILE 
        IP[:PORT] 
        HOSTNAME[:PORT] 
    parameters: 
        weight=number     #权重,默认为1 
        max_conns         #连接后端报务器最大并发活动连接数,1.11.5后支持 
        max_fails=number  #失败尝试最大次数;超出此处指定的次数时,server将被标记为不可用,默认为1 
        fail_timeout=time #后端服务器标记为不可用状态的连接超时时长,默认10s 
        backup            #将服务器标记为“备用”,即所有服务器均不可用时才启用 
        down              #标记为“不可用”,配合ip_hash使用,实现灰度发布

3、ip_hash  
    源地址hash调度方法
    可用位置:upstream

4、least_conn 
    最少连接调度算法,当server拥有不同的权重时其为wlc,当所有后端主机连接数相同时,则使用wrr,适用于长连接
    可用位置:upstream

5、hash key [consistent] 
    基于指定的key的hash表来实现对请求的调度,此处的key可以直接文本、变量或二者组合 
    可用位置:upstream
        作用:将请求分类,同一类请求将发往同一个upstream server,使用consistent参数,将使用ketama一致性hash算法,适用于后端是Cache服务器(如varnish)时使用 
        hash $request_uri consistent;  #根据url
        hash $remote_addr;             #根据请求的主机

6、keepalive 连接数N; 
    为每个worker进程保留的空闲的长连接数量,可节约nginx端口,并减少连接管理的消耗
    可用位置:upstream

7、health_check [parameters]; 
    健康状态检测机制;只能用于location上下文 
    常用参数: 
        interval=time   #检测的频率,默认为5秒 
        fails=number:  #判定服务器不可用的失败检测次数;默认为1次 
        passes=number: #判定服务器可用的失败检测次数;默认为1次 
        uri=uri:       #做健康状态检测测试的目标uri;默认为/ 
        match=NAME:    #健康状态检测的结果评估调用此处指定的match配置块
    ###注意:仅对nginx plus有效###

8、match name { ... } 
    对backend server做健康状态检测时,定义其结果判断机制;只能用于http上下文
    常用的参数: 
        status  code[  code ...]: 期望的响应状态码 
        header  HEADER[operator  value]:期望存在响应首部,也可对期望的响应首部的值基于比较操作符和值进行比较 
        body:期望响应报文的主体部分应该有的内容 
        ###注意:仅对nginxplus有效###

ngx_http_proxy_module模块 详细说明请参考官网 地址链接

链接 一致性哈希算法原理 一致性哈希算法 nginx的hash和一致性hash的区别

模板1

访问www.a.com 缓存+调度

代码语言:javascript
复制
http{
    proxy_cache_path /var/cache/nginx/proxy_cache levels=1:2:2 keys_zone=proxycache:20m inactive=120s max_si #缓存
ze=1g;
    upstream mysqlsrvs{
        ip_hash; #源地址hash调度方法 写了backup就不可用
        server 172.18.99.1:80 weight=2; #weight权重
        server 172.18.99.2:80;          #标记down,配合ip_hash使用,实现灰度发布
        server 172.18.99.3:80 backup;   #backup将服务器标记为“备用”,即所有服务器均不可用时才启用 
    }
}
server{
    server_name www.a.com;
    proxy_cache proxycache;
    proxy_cache_key $request_uri;
    proxy_cache_valid 200 302 301 1h;
    proxy_cache_valid any 1m;
    location / {
        proxy_pass http://mysqlsrvs;
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-03-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ngx_http_upstream_module
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档