动静分离实现原理

本文详细介绍了如何利用Nginx实现正向代理和反向代理,以及负载均衡和动静分离。通过配置Nginx服务池、反向代理和负载均衡策略,结合Tomcat实例,展示了动静资源的分离处理,提高了系统性能。同时,通过调整Tomcat配置文件,创建了多个Tomcat实例,实现了负载均衡。最后,配置Nginx以处理静态页面并反向代理动态请求,确保了服务器的高效运行。

NGINX负载均衡与反向代理

一:实现原理

image-20220729001436774

正向代理:正向代理允许客户端通过它访问任意网站并且隐蔽客户端自身,因此你必须采取安全措施来确保仅为经过授权的客户端提供服务
反向代理:对外是透明的,访问者并不知道自己访问的是代理。对访问者而言,他以为访问的就是原始服务器(可以隐藏服务的真实地址

负载均衡有两种,一种在七层,一种在四层,七层是对外的,四层是对内的,在应用内访问。http协议都是七层

upstream 服务池名{} #配置后端服务池,以提供响应数据

proxy_pass http://服务池名 #配置将访问请求转发给后端服务池的服务器处理

(stream)

动静分离实现原理

服务端接收来自客户端的请求中,既有动态资源也有静态资源,静态资源由nginx提供服务,动态资源由nginx转发给后端(反向代理),及tomcat,简单来说就是nginx将动态资源和静态资源分开处理,可以提高nginx的处理能力

image-20220729150025525

nginx静态处理的优势

1:nginx处理静态页面的效率远高于tomcat的处理能力

2:nginx处理静态资源的能力是tomcat处理的6倍

3:若tomcat的请求量为1000次,则nginx为6000次

4:tomcat每秒的吞吐量为0.6M,nginx则为3.6M

image-20220729151208111

实验搭建反向代理与负载均衡

一,安装nginx和tomcat

这里就不一一显示了

image-20220801193727413


image-20220801193753598


都启动好了后,开始添加用户设置属主属组

image-20220801193838819


useradd -s /sbin/nologin tomcat
chown tomcat:tomcat /usr/local/tomcat -R

新建服务文件

vim /etc/systemd/system/tomcat.service

将以下这段复制进去

[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
RestartSec=3
PrivateTmp=true
User=tomcat
Group=tomcat

[Install]
WantedBy=multi-user.target

重新加载服务,并查看服务是否启动

systemctl daemon-reload
systemctl start tomcat
netstat -ntlap |grep 8080

image-20220801194421123


切换至webapps下,再新建目录

cd /usr/local/tomcat/webapps/
mkdir pxx

image-20220801195709254


建立动态页面文件

vim qjm/index.jsp

将下面的话复制进去

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>   
</head>
<body>
<% out.println("666");%>
</body>
</html>

修改主配置文件

#备份一下
cp /usr/local/tomcat/conf/server.xml /usr/local/tomcat/conf/server.xml.bak

vim /usr/local/tomcat/conf/server.xml
##164行下添加
<Host name="localhost" appBase="webapps"
            unpackWARs="true" autoDeploy="true" xmlValidation="false"
            xmlNamespaceAware="false">
                <Context docBase="/usr/local/tomcat/webapps/pxx"
                path="" reloadable="true" />
      </Host>

先注释

image-20220801201329657

image-20220801201446425

再添加

image-20220801203121395

重启服务,并在网页测试

image-20220801203045957


tomcat服务器1配置

在tomcat的基础上,创建tomcat工作目录,并把软件包移动

mkdir /usr/local/tomcat
mv apache-tomcat-9.0.16 /usr/local/tomcat/tomcat1
cp -a /usr/local/tomcat/tomcat1 /usr/local/tomcat/tomcat2

image-20220801224312987


配置tomcat环境变量
vim /etc/profile.d/tomcat.sh

tomcat1

export CATALINA_HOME1=/usr/local/tomcat/tomcat1
export CATALINA_BASE1=/usr/local/tomcat/tomcat1
export TOMCAT_HOME1=/usr/local/tomcat/tomcat1

tomcat2

export CATALINA_HOME2=/usr/local/tomcat/tomcat2
export CATALINA_BASE2=/usr/local/tomcat/tomcat2
export TOMCAT_HOME2=/usr/local/tomcat/tomcat2

image-20220801225322757

刷新系统

source /etc/profile.d/tomcat.sh

修改tomcat2中的server.xml文件,要求各tomcat实例配置不能有重复的端口号
vim /usr/local/tomcat/tomcat2/conf/server.xml
<Server port="8006" shutdown="SHUTDOWN">		##22行,修改Server prot,默认为8005 -> 修改为8006

<Connector port="8081" protocol="HTTP/1.1"		##69行,修改Connector port,HTTP/1.1  默认为8080 -> 修改为8081

<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />	##116行,修改Connector port AJP/1.3,默认为8009 -> 修改为8010

image-20220801225458804

image-20220801225604548

image-20220801225656654

修改添加内容的环境变量,修改各tomcat实例中的startup.sh和shutdown.sh文件,添加tomcat环境变量
vim /usr/local/tomcat/tomcat1/bin/startup.sh
##tomcat1添加
##在二十行下添加插入
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1
vim /usr/local/tomcat/tomcat2/bin/startup.sh
##tomcat2添加
##在二十行下添加插入
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2

image-20220801230149148

image-20220801230240746


启动tomcat中的/bin/startup.sh
/usr/local/tomcat/tomcat1/bin/startup.sh 

image-20220801230443174

/usr/local/tomcat/tomcat2/bin/startup.sh 

image-20220801230505590

image-20220801230740174

查看是否开启

netstat -natp | grep java

image-20220801230559365

image-20220801230758112


tomcat动静分离配置

添加访问页面

mkdir /usr/local/tomcat/tomcat1/webapps/test
vim /usr/local/tomcat/tomcat1/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>   #指定为 test1 页面
</head>
<body>
<% out.println("动态页面 1,http://www.test1.com");%>
</body>
</html>

image-20220801231205632

修改主配置文件,添加虚拟主机

依然是将148行至150行注销,160行至164行注销

 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
         <Context docBase="/usr/local/tomcat/tomcat1/webapps/test" path=""     reloadable="true">
        </Context>
</Host>

image-20220802001226732

关闭再开启

##关闭重启,tomcat配置完成
[root@localhost opt]# /usr/local/tomcat/tomcat1/bin/shutdown.sh
Using CATALINA_BASE:   /usr/local/tomcat/tomcat1
Using CATALINA_HOME:   /usr/local/tomcat/tomcat1
Using CATALINA_TMPDIR: /usr/local/tomcat/tomcat1/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/tomcat1/bin/bootstrap.jar:/usr/local/tomcat/tomcat1/bin/tomcat-juli.jar

[root@localhost opt]# /usr/local/tomcat/tomcat1/bin/startup.sh
Using CATALINA_BASE:   /usr/local/tomcat/tomcat1
Using CATALINA_HOME:   /usr/local/tomcat/tomcat1
Using CATALINA_TMPDIR: /usr/local/tomcat/tomcat1/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/tomcat1/bin/bootstrap.jar:/usr/local/tomcat/tomcat1/bin/tomcat-juli.jar
Tomcat started.

image-20220802002441725

tomcat2服务器配置

动静分离配置

mkdir /usr/local/tomcat/tomcat2/webapps/test
vim /usr/local/tomcat/tomcat2/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test2 page</title>		 #指定为 test2 页面
</head>
<body>
<% out.println("动态页面 2,http://www.test2.com");%>
</body>
</html>

image-20220802002935655

修改主配置文件,添加虚拟主机

vim /usr/local/tomcat/tomcat2/conf/server.xml
 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
         <Context docBase="/usr/local/tomcat/tomcat2/webapps/test" path=""     reloadable="true">
        </Context>
</Host>

关闭再启动,查看

image-20220802003812583

Nginx+ Tomcat 负载均衡、反向代理、动静分离

实验环境

nginx服务器:192.168.179.15

tomcat1:192.168.179.7:8080

tomcat2:192.168.179.90:8080 192.168.179.90:8081

将上述环境都配置好之后,开始配置

设置静态页面

echo '<html><body><h1>this is jingtai  page </h1></body></html>' > /usr/local/nginx/html/index.html

image-20220802004602906

添加访问图片

cd /usr/local/nginx/html/  
##拖入添加图片

image-20220802003932669

配置nginx主配置文件

cd /usr/local/nginx/conf
vim nginx.conf
##配置负载均衡的服务器列表,weight参数表示权重,权重越高,被分配到的概率越大
##33行下面加入以下内容
    #gzip  on;
    upstream tomcat_server {
     server 192.168.179.7:8080 weight=1;
     server 192.168.179.90:8080 weight=1;
     server 192.168.179.90:8081 weight=1;
}

##在45行下加入下面配置参数server下面配置,添加反向代理,动静分离
#access_log  logs/host.access.log  main;
        location ~ .*\.jsp$ {
          proxy_pass http://tomcat_server;
          proxy_set_header HOST $host;
          proxy_set_header X-Real-IP $remote_addr;  
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        
##添加参数解析
location ~ .*\.jsp$ {			
#把nginx接收到的客户端的ip地址赋值给跳转到tomcat请求中的源ip,识别客户的真实ip,并且赋值与跳转
proxy_pass http://tomcat_server; 

proxy_set_header HOST $host;	
#设定后端的web服务器接收到的请求访问的主机名(域名或ip、端口),默认host的值为proxy_pass直连设置的主机名

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都记录下来




##主配置文件57行下添加下面配置参数,配置Nginx处理静态图片请求,让页面能够加载图片
 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
                        root /usr/local/nginx/html;
                        expires 10d;
        }

 location / {
            root   html;
            index  index.html index.htm;
        }

设置权重

image-20220802171743670

反向代理

image-20220802171833571

添加匹配的图片类型

image-20220802172324703

检查语法

nginx -t

image-20220802172438936

重启验证

image-20220802172558264

image-20220802172754189


每个服务器都看下,测试负载均衡是否成功

image-20220802173036984

image-20220802173059458

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值