1.正向代理
在国内无法直接访问谷歌和Youtube这些国外的网站,如果想在国内访问这些网站该怎么办呢?最简单的方式就是搞一个代理服务器,通过代理服务器来访问国外的网站。
要完成这些操作,一般需要在浏览器中配置一下代理服务器的访问地址,这一步是用户可以感知到的。但是目标服务器(谷歌服务器)是无法知道真正的访问者是谁的,在他那里真实访问者就是正向代理服务器。
因此,正向代理可以把客户端隐藏起来(相对于目标服务器来说)。
2.反向代理
客户端发送请求到反向代理服务器,由反向代理服务器去选择要访问的目标服务器,获取数据之后,然后返回给客户端,这个过程我们只知道反向代理服务器的地址,因为我们不需要知道目标服务器的地址,这些都交给反向代理服务器去做。
因此可以这样理解:反向代理服务器和目标服务器是一个整体,但是对外暴露的访问地址和端口只有反向代理服务器,我们通过访问反向代理服务器即可获得结果。
反向代理是实现负载均衡的基础?
3.Nginx负载均衡
我们所开发的网络应用,从宏观上来看,无非就是一个请求响应的过程,但是随着互联网的发展,用户越来越多,请求自然也就越来越多,所以说这个单个服务器已经无法及时处理这么多请求了,我们自然而然能想到的就是再多添加几个功能一样的服务器,这是集群,当大量的用户请求过来时,如何合理的分配到多各个服务器上去处理这些请求,这就需要一个服务器来做这样一个合理分配请求的工作,这个工作就是负载均衡,目前市面上能做负载均衡的专业硬件可以提供很好的功能,但是太贵,所以负载均衡的软件相对来说比较受欢迎,而nginx就是其中的一个。
负载均衡顾名思义就是把请求分配到多个服务来完成,这样做既能提高服务的可用性,也可以提高响应速度,给用户带来更好的体验。
nginx提供了以下几种分配请求的方式 :
3.1 轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器挂掉了,能自动剔除。
# 反向代理配置
upstream server_list{
# 这个是tomcat的访问路径
server localhost:8080;
server localhost:9999;
}
3.2 weight 权重
weight 代表权重,默认为1,权重越高被分配的客户端越多
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
# 反向代理配置
upstream server_list{
# 这个是tomcat的访问路径
server localhost:8080 weight=5;#采用权重分配策略
server localhost:9999 weight=1;
}
3.3 ip_hash
每个请求按访问ip的hash值分配,这样每个访问客户端会固定访问一个后端服务器
,
可以解决会话Session丢失的问题
upstream backserver {
ip_hash; #采用ip_hash策略
server 127.0.0.1:8080;
server 127.0.0.1:9090;
}
3.4 最少连接
请求会被转发到连接数最少的服务器上(谁最闲就把请求给谁来处理
)
upstream backserver {
least_conn; # 配置最小连接分配策略
server 127.0.0.1:8080;
server 127.0.0.1:9090;
}
4.动静分离
感谢
狂神
https://www.bilibili.com/video/BV1F5411J7vK?p=1
nginx官网
官网下载地址:http://nginx.org/en/download.html