nginx反向代理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
server {
listen 80;
server_name malltest.bankbaoxian.com;

location /{
proxy_pass http://XXX.XXX.XXX.XXX:XXXX;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-real-uri $request;
}

location /icbc {
proxy_pass http://XXX.XXX.XXX.XXX:XXXX;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-real-uri $request;

}
}

同一个域名可以有不同的跳转,location不同即可

Nginx故障转移而导致请求重复

注意点:如果请求超时(nginx timeout时间设置为3秒,应用接口比如5秒后才有响应),GET请求会重复分发,POST请求会幂等,所以GET请求不能用在新增和删除数据,只能用在查询。但是如果服务器确实挂了,POST请求还是会转发的

Nginx故障转移导致的服务器雪崩

场景

高并发场景下,A机器每秒有5000请求超时,故障转移到B、C机器,而导致原本已经满负荷的B、C机器雪上加霜而发生雪崩

解决

  • 设置proxy_next_upstream_tries,限制将请求传递到下一个服务器的可能尝试次数。默认为0,即一直传递下去
  • 设置proxy_next_upstream_timeout,重试超时时间,过了时间之后就不再进行重试

反向代理和正向代理

  • 正向代理

正向代理:比如说VPN,我国访问不了谷歌,但是通过VPN代理即可访问,即内网访问外网

反向代理:外网通过NG访问内网,优点:保证内网的安全,负载均衡

总结

正向代理即是客户端代理, 代理客户端, 服务端不知道实际发起请求的客户端

反向代理即是服务端代理, 代理服务端, 客户端不知道实际提供服务的服务端

正向代理和反向代理的区别

赏个🍗吧
0%