nginx负载均衡案例

负载均衡 注重点

非80端口做反向代理

需要特别注意:proxy_set_header Host $host:$server_port;

nginx接收到浏览器请求后修改请求头中的host信息,然后再把请求转发给后端真实服务节点,服务节点响应后把返回信息传送给nginx,而由于nginx是使用的非80端口做代理,后端服务节点却依然以为nginx是80端口,所以响应信息没有正确的返回给nginx的非80端口。

负载均衡 策略

p_hash 会尽量保障Session的统一性

https://www.cnblogs.com/yanggb/p/10895326.html

参考代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

upstream tomcat_server {
ip_hash;
server 192.168.30.199:8080 max_fails=3 fail_timeout=40s;
server 192.168.30.199:18080;
}

map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}

server {
listen 81;
server_name pdi.pk;
client_max_body_size 500M;

location /pdi {
proxy_pass http://tomcat_server;
proxy_set_header Host $host:$server_port;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}

}


websocket

https://www.xncoding.com/2018/03/12/fullstack/nginx-websocket.html

负载均衡 重试策略 陷阱

重试策略涉及核心流量转发,配置不当可出现以下(不限):

1.订单重复提交
2.恶意攻击导致no live upstreams
3.业务正常耗时被当成超时

https://zhuanlan.zhihu.com/p/127959800

其余参考

https://developer.51cto.com/article/619538.html