很多应用服务的运行效率是很低的,QPS,TPS,并发等都是受限的,所以需要把很多应用服务组成一个集群,向用户提供高可用性的服务,这个时候需要 Nginx 的反向代理功能,而应用服务的动态扩容需要负载均衡功能,另外一个,Nginx 层还需要做缓存。
因此反向代理服务主要是三个功能:
- 反向代理
 - 负载均衡
 - 缓存
 
基于IP
# 基于IP代理
server {
  listen       80;
  server_name  localhost;
  location / {
    proxy_pass http://10.17.0.2;
    proxy_redirect default;
  }
  location = /50x.html {
    root   html;
  }
}基于端口
# 基于端口代理
server {
  listen       81;
  server_name  localhost;
  location / {
    proxy_pass http://10.17.0.3:10102;
    proxy_redirect default;
  }
  location = /50x.html {
    root   html;
  }
}
server {
  listen       82;
  server_name  localhost;
  location / {
    proxy_pass https://blog.darebeat.cn;
    proxy_redirect default;
  }
  location = /50x.html {
    root   html;
  }
}基于域名代理
# 基于域名代理 + 负载均衡
upstream darebeat{
  ip_hash;
  server 10.17.0.3:10102;
  server 10.17.0.4:10102;
  server 10.17.0.5:10102;
}
upstream blog{
  server blog.darebeat.cn;
}
server {
  listen       80;
  server_name  darebeat.cn;
  location / {
    proxy_pass http://darebeat;
    proxy_redirect default;
  }
  location = /50x.html {
    root   html;
  }
}
server {
  listen       80;
  server_name  blog.darebeat.cn;
  location / {
    proxy_pass http://blog;
    proxy_redirect default;
  }
  location = /50x.html {
    root   html;
  }
}负载均衡
分发策略
- 轮询: 1:1 轮流处理请求(默认)
 - 权重: weight=3 分配比重
 - ip绑定_哈希算法
 
配置参数说明
down 表示单前的server暂时不参与负载
 weight 默认为1.weight越大,负载的权重就越大
 max_fails 允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
 fail_timeout max_fails 次失败后,暂停的时间
 backup 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻

