很多应用服务的运行效率是很低的,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机器。所以这台机器压力会最轻