nginx之http反向代理多台服务器

咻咻ing 2019-12-22

Nginx http 反向代理高级应用

是Nginx可以基于ngx_http_upstream_module模块提供服务器分组转发、权重分配、状态监测、调度算法等高级功能。

http upstream配置参数:

upstream name
#自定义一组服务器,配置在http内;指定upstream服务器组的名称,名称中不能包含"_",否则会报错;upstream可以和server配置在一个文件中,也可以单独一个文件,但是upstream不能配置在server里面。

server address parameters;
address可以配置为IP、域名、unix套接字;
parameters参数可以配置下面几种:
                              weight=number #设置权重,默认为1。
                              max_conns=number  #给当前server设置最大活动链接数,默认为0表示没有限制。
                              max_fails=number  #对后端服务器连续监测失败多少次就标记为不可用。
                              fail_timeout=time #对后端服务器的单次监测超时时间,默认为10秒。
                              backup  #设置为备份服务器,当所有服务器不可用时将重新启用次服务器。
                              down    #标记为down状态。
                              resolve #当server定义的是主机名的时候,当A记录发生变化会自动应用新IP而不用重启Nginx。

hash KEY consistent;
#基于指定key做hash计算,使用consistent参数,将使用ketama一致性hash算法,适用于后端是Cache服务器(如varnish)时使用,consistent定义使用一致性hash运算,一致性hash基于取模运算。KEY可以设置为$request_uri,基于用户的请求的uri做hash运算。

ip_hash;
#源地址hash调度方法,基于的客户端的remote_addr(源地址)做hash计算,以实现会话保持。

least_conn;
#最少连接调度算法,优先将客户端请求调度到当前连接最少的后端服务器。

注:调度算法需要设置在upstream中;默认调度算法是轮询。

实现nginx http反向代理后端多台服务器:

upstream xxx-app1 {
   server 192.168.38.37:80 weight=1 fail_timeout=5s max_fails=3;
   server 192.168.38.47:80 weight=1 fail_timeout=5s max_fails=3;
}
server {
   listen 80;
   server_name www.xxxpc.net;
   location /web {
      index index.html;     #需要指定默认页面
      proxy_pass http://xxx-app1;    #指定upstream分组的名称
   }
}

相关推荐