Nginx的反向代理
正向代理
- 正向代理服务器时由客户端设立的
- 客户端了解代理服务器和目标服务器是谁
- 帮助咱们实现突破访问权限,提高访问速度,对目标服务器隐藏客户端的ip地址
反向代理
- 反向代理服务器是配置在服务器端的
- 客户端是不知道访问的是到底是哪一台服务器
- 达到负载均衡,并且可以隐藏服务器真正的ip地址
基于Nginx实现反向代理
准备一个目标服务器
在docker中启动一个tomcat容器
编写nginx配置文件,通过Nginx访问到tomcat服务器
server{
listen 80;
server_name localhost;
#基于反向代理访问到Tomcat服务器
locaton / {
proxy_pass http://192.168.234.100:8088/;
}
}
关于Nginx的location路径映射
优先级关系
(location=) > (location/xxx/yyy/zzz) > (location ^~) > (location ,*) > (loacation /起始路径) > (location /)
# = 匹配
location = / {
#精准匹配,主机名ip后面不能带任何字符串
}
# 通用匹配
location /xxx {
#匹配所有以xxx开头的路径
}
# 正则匹配
location ~ /xxx{
#匹配所有以xxx开头的滤镜
}
#匹配开头路径
location ^~ /images/{
#匹配所有以/images开头的路径
}
#~* \. (gif|jpg|png)${
#匹配以gif或者jpg或者png结尾的路径
}
负载均衡
Nginx为我们提供了三种负载均衡的策略
- 轮询:
将客户端发起的请求,平均分配给每一台服务器 - 权重:
会将客户端的请求,根据服务器的权重值不同,分配给不同的数量 - ip hash:
基于发起请求的客户端ip地址不同,他始终会将请求发送到指定的服务区上
Nginx集群
引言
单点故障,避免nginx宕机,导致整个程序崩溃
准备keepalived,监听nginx的健康情况
准备haproxy,提供一个虚拟的路径,统一的去接收用户请求