Bootstrap

NGINX反向代理 负载均衡 动静分离

1.Nginx负载均衡实现原理

Nginx实现负载均衡是通过反向代理实现

Nginx 反向代理:将Nginx接收到的请求转发给其它应用服务器处理

Nginx 负载均衡:通过反向代理实现,还可以将nginx接收到的请求转发给多个后端应用服务器处理

Nginx 动静分离:静态页面请求,由nginx自行处理并响应;动态页面请求,则nginx通过反向代理转发给后端应用服务器处理

3. Nginx 配置反向代理的主要参数
upstream 服务池名 {}
♢ 配置后端服务器池,比提供相应数据
proxy_pass  http://服务池名
♢ 配置将访问请求转发给后端服务器池的服务器处理

2.Nginx动静分离实现原理

1. 动静分离原理
服务端接收来自客户端的请求中。既有静态资源也有动态资源,静态资源由Nginx提供服务,动态资源Nginx转发至后端。

2 Nginx 静态处理优势
• Nginx处理静态页面的效率远高于Tomcat的处理能力

• 若Tomcat的请求量为1000次,则Nginx的请求量为6000次

• Tomcat每秒的吞吐量为0.6M,Nginx的每秒吞吐量为3.6M

• Nginx处理静态资源的能力是Tomcat处理的6倍

实验;

1.准备两台服务器,Nginx作为负载均衡器,Tomcat作为应用服务器

Nginx 服务器:192.168.73.110:80
Tomcat服务器2:192.168.73.100:8080  192.168.73.100:8081 192.168.73.100:8083

2.部署Nginx 负载均衡器

rz -E nigxn repo
再使用yum安装比较方便

3.部署一台tomcat多实例

1.修改tomcat主配置文件 server.xml 中的三个端口号 8080  8005  8009,每个实例要不一样
2.修改tomcat启动停止脚本 startup.sh  shutdown.sh ,添加环境变量 export TOMCAT_HOME  CATALINA_HOME  CATALINA_BASE 都指向每个实例各自的工作目录

4.在使用mkdir /usr/local/tomcat/webapps/xy101

创建动态文件.jsp$的动态文件 test.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<html>
<head>
<title>JSP test1 page</title>
</head>
<body>
<% out.println("动态页面 1,http://www.test1.com"); %>
</body>
</html>
~                          

在tomcat2 tocat3 中同理

5.

(1)在http配置块中使用upstream定义后端服务器列表名称和节点参数

  #配置负载均衡的服务器列表,weight参数表示权重,权重越高,被分配到的概率越大
(2)在server配置块中使用location匹配用户请求的动态页面的URL路径,使用 proxy_pass 基于协议代理转发。

location ~ \.jsp$ {
   proxy_pass http://tomcat_server;
#配置Nginx处理动态页面请求,将 .jsp文件请求转发到Tomcat 服务器处理 
    proxy_set_header HOST $host;
#设置后端的Web服务器可以获取远程客户端的真实IP
   proxy_set_header x_Real_IP $remote_addr;
#把$remote_addr赋值给X-Real-IP,来获取源IP
   proxy_set_header X_Forwarded_For $proxy_add_x_forwarded_for;
  }
#在nginx 作为代理服务器时,设置的IP列表,会把经过的机器ip,代理机器ip都记录下来

然后重启nginx 测试

测试动静分离:

静态:分配给nginx服务器

动态:分配给tomcat服务器

 负载均衡: 不断测试刷新页面

实验二:

四层反向代理:基于 IP 和 端口 实现的代理转发(根据IP和端口来转发请求)

1.将web2的nginx服务器按照web1的设置一下

2.再加入一个nginx服务器作为负载均衡器192.168.73.130

(1)编译安装时需要添加 stream 四层代理模块  ./configure --with-stream

(2)在 http 配置块同层级,一般在 http 配置块上面添加 stream 配置块,在 stream 配置块里使用upstream定义后端服务器列表名称和节点参数以及使用server配置块定义监听端口和转发配置
3.验证:

静态页面:静态页面分配给nginx 因为有两个后端服务器列表刷新可以轮询

动态页面:动态页面访问有后面两个nginx服务器分配给后面的tomcat服务器处理 刷新也可以轮询

;