目录
1.Nginx负载均衡
1.1 负载均衡概念
1.2 负载均衡原理
1.3 Nginx配置反向代理
1.3.1 反向代理概念
1.3.2 反向代理主要参数
2.Nginx动静分离
2.1 动静分离的概念
2.2 Nginx 静态处理优势
2.3 动静分离原理
3. Nginx+Tomcat动静分离的实验设计
3.1 准备三台虚拟机
3.2 准备动态页面
3.3 配置Nginx服务器实现动静分离
3.4 浏览器验证
4.Nginx反向代理类型
4.1 七层反向代理
4.2 四层反向代理配置
4.2.1 准备虚拟机
4.2.2 配置另一台Nginx服务器实现动静分离
4.2.3 配置Nginx负载均衡器用作四层代理
4.2.4 浏览器验证
4.2.5 四层代理与七层代理总结
1.Nginx负载均衡
1.1 负载均衡概念
通过反向代理实现,还可以将nginx接收到的请求转发给多个后端应用服务器处理
1.2 负载均衡原理
Nginx实现负载均衡是通过反向代理实现Nginx服务器作为前端,Tomcat服务器作为后端,web页面请求由Nginx服务来进行转发。 但是不是把所有的web请求转发,而是将静态页面请求Nginx服务器自己来处理,动态页面请求,转发给后端的Tomcat服务器来处理。据了解,Tomcat是属于轻量级的应用服务器,可接受访问量可能会不足,所以我们需要多台Tomcat服务器。并且Tomcat并发量处理能力弱(约Nginx的六分之一),所以需要Nginx方向代理时,进行合理的调用分配。
1.3 Nginx配置反向代理
1.3.1 反向代理概念
将nginx接收到的请求转发给其他应用服务器处理
1.3.2 反向代理主要参数
- upstream 服务池名 { }
- 作用:配置后端服务器池,以提供响应数据
upstream框架中,指令中涉及多个参数,各个参数含义说明如下:
参数 | 含义 |
weight | 服务访问的权重,默认是1 |
max_conns | server的最大并发连接数,仅作用于单worker进程,默认是0,表示没有限制 |
max _fails | 在fail timeout时间段内,最大的失败次数,当达到最大失败时,会在failtimeout秒内这台server不允许再次被选择 |
fail timeout | 单位为秒,默认10秒 |
- proxy_pass http:// 服务池名
- 作用:配置将访问请求转发给后端服务器池的服务器处理
2.Nginx动静分离
2.1 动静分离的概念
静态页面请求由nginx自行处理并响应;动态页面请求由nginx通过反向代理转发给后端应用服务器处理。
2.2 Nginx 静态处理优势
Nginx 静态处理优势:Nginx 处理静态页面的效率远高于 Tomcat 的处理能力若 Tomcat 的请求量为1000次,则 Nginx 的请求量为6000次Tomcat 每秒的吞吐量为0.6M,Nginx 的每秒吞吐量为3.6MNginx 处理静态资源的能力是 Tomcat 处理的6倍
2.3 动静分离原理
服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由 Nginx 提供服务,动态资源由 Nginx 转发至后端。
3. Nginx+Tomcat动静分离的实验设计
3.1 准备三台虚拟机
192.168.9.120做nginx服务器
192.168.9.210做tomcat服务器(内含tomcat:8080、tomcat2:8081、tomcat3:8082)
192.168.9.140做tomcat服务器(tomcat:8080)
3.2 准备动态页面
192.168.9.210服务器:
192.168.9.140服务器:
3.3 配置Nginx服务器实现动静分离
192.168.9.120服务器:
编写静态测试页面
3.4 浏览器验证
静态页面
动态页面(浏览器页面使用F5刷新切换)http://192.168.9.120/xy101/test.jsp
4.Nginx反向代理类型
4.1 七层反向代理
概念:基于http、https、mail等七层应用协议的代理转发(根据用户访问请求的URL路径来转发请求),通常用于动静分离应用场景。
配置总结:
1)在http配置块中使用upstream定义后端服务器列表名称和节点参数
http {
upstream 服务器列表名称 {
server IP1:PORT1 weight=1;
server IP2:PORT2 weight=1;
......
}
2)在server配置块中使用location匹配用户请求的动态页面的URL路径,使用 proxy_pass 基于协议代理转发
server {
......
location ~ .*\.jsp$ {
proxy_pass http://服务器列表名称;
#用于为后端服务器获取真实的客户端地址
proxy_set_header HOST $host;
proxy_set_header X_Real_IP $remote_addr;
proxy_set_header X_Forwarded_For $proxy_add_x_forwarded_for;
}
......
}
......
}
4.2 四层反向代理配置
概念:基于IP和端口实现的代理转发(根据IP和端口来转发请求),通常用于做网关访问入口的负载均衡器等应用场景。
4.2.1 准备虚拟机
192.168.9.120做nginx服务器(用作七层代理)
192.168.9.150做nginx服务器(用作七层代理,本机为yum安装的nginx)
192.168.9.111做负载均衡器(用作四层代理)
192.168.9.210做tomcat服务器(内含tomcat:8080、tomcat2:8081、tomcat3:8082)
192.168.9.140做tomcat服务器(tomcat:8080)
4.2.2 配置另一台Nginx服务器实现动静分离
192.168.9.150nginx服务器
vim /etc/nginx/conf.d/default.conf
配置静态页面
网页测试
静态页面
动态页面
4.2.3 配置Nginx负载均衡器用作四层代理
为方便测试需关闭两个nginx服务器长连接
192.168.9.120
vim /usr/local/nginx/conf/nginx.confsystemctl restart nginx
192.168.9.150
vim /etc/nginx/nginx.conf
systemctl restart nginx
重新取一台虚拟机安装nginx作为负载均衡器
192.168.9.111虚拟机(使用yum安装nginx)
useradd -M -s /sbin/nologin nginx
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-stream #配置
make -j2 && make install #编译安装
对负载均衡器进行配置
192.168.9.111虚拟机
vim /usr/local/nginx/conf/nginx.conf
4.2.4 浏览器验证
静态页面
动态页面
配置总结:
1)编译安装时需要添加 stream 四层代理模块 ./configure --with-stream
2)在 http 配置块同层级,一般在 http 配置块上面添加 stream 配置块,在 stream 配置块里使用upstream定义后端服务器列表名称和节点参数以及使用server配置块定义监听端口和转发配置
stream {
upstream 服务器列表名称 {
server IP1:PORT1 weight=1;
server IP2:PORT2 weight=1;
......
}
server {
listen IP:PORT;
proxy_pass 服务器列表名称;
}
}
http {....}
4.2.5 四层代理与七层代理总结
四层反向代理比七层反向代理转发性能更高,七层反向代理比四层反向代理转发功能更多、更灵活。