一. 反向代理
客户端访问一个网站,需要通过代理服务器才可以上网。客户端先将请求发给代理服务器,代理服务器再将请求转发给网站,网站的响应结果先发给代理服务器,然后再由代理服务器转发给客户端。这就是正向代理的过程。
相对于正向代理,反向代理服务器位于网站机房一侧,代理网站Web服务器接收HTTP请求,这样可以有效保护网站的安全,因为来自互联网的请求必须经过代理服务器才能到网站,这样就在Web服务器和外部的网络攻击之间建立了一道屏障。

By the way,反向代理还可以实现负载均衡的功能,借助于负载均衡构建的集群可以提高系统总体处理能力,从而提高网站高并发时的性能。
二.负载均衡
负载均衡(Load Balance) 由于访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。这时需要将网站或系统部署到多台服务器上,并且随着压力的升高,服务器的台数也在增多,同时部署更多内容一致的服务器,将用户的访问在多台服务器之间分发,实现横向扩展,或者水平扩展。

实际上反向代理服务器处于Web服务器前面,这个位置正好是负载均衡服务器的位置,所以反向代理服务器可以同时提供负载均衡的功能,将请求根据负载均衡算法转发到不同的Web服务器上。
三. Nginx 负载均衡实践
1. 准备工作
准备两台 tomcat 服务器,一台 8081,一台 8082
2. 测试页面
http://localhost:8081/demo/index.jsp

http://localhost:8082/demo/index.jsp

3. 在 nginx 中进行负载均衡的配置
修改配置文件nginx.conf:
a). 配置服务器组,添加upstream配置
upstream demo {
server 127.0.0.1:8081; #服务器地址1
server 127.0.0.1:8082; #服务器地址2
}
b). 修改nginx监听的端口号80,改为8080
server {
listen 8080;
server_name localhost;
}
c). 在location中,利用proxy_pass配置反向代理地址
location / {
root html;
index index.html index.htm;
proxy_pass http://demo; #配置方向代理地址
}
d). 启动nginx和tomcat
4.测试
访问url:http://localhost:8080/demo/index.jsp


In a word,一个超酷的负载均衡就配置完成了,超级简单哦
四. nginx负载均衡策略
负载均衡将客户端访问分摊到不同的服务器,这样既能保证服务的可用性,又能保证性能。Nginx 提供了几种分配方式(策略):
1. 轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream demo {
server 127.0.0.1:8081; #服务器地址1
server 127.0.0.1:8082; #服务器地址2
}
2. weight 权重
指定轮询的权重比,weight 代表权重, 默认为 1。权重越高被分配的客户端越多,主要用于后端服务器性能不均的情况。
upstream demo {
server 127.0.0.1:8081 weight=2; #服务器地址1
server 127.0.0.1:8082;#服务器地址2
}
3. 最少链接
web请求会被转发到连接数最少的服务器上。
upstream demo {
least_conn;
server 127.0.0.1:8081; #服务器地址1
server 127.0.0.1:8082; #服务器地址2
}
4. ip_hash
ip_hash 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器
upstream demo {
ip_hash ;
server 127.0.0.1:8081; #服务器地址1
server 127.0.0.1:8082; #服务器地址2
}
5. fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream demo {
server 127.0.0.1:8081; #服务器地址1
server 127.0.0.1:8082; #服务器地址2
fair;
}