1、正向代理与反向代理
1.1、正向代理(A找B问C借钱)
正向代理
-----------------------
在客户端浏览器中配置代理服务器,然后通过代理服务器来进行访问,
将访问到的局域网以外的 Internet 网站内容返回给客户端,
而不是通过局域网中的客户端设备直接访问到局域网以外的 Internet 网站中
作用:
-
访问原来无法访问的资源;
-
可做缓存,加速访问资源;
-
对客户端访问授权,上网进行认证
-
代理可以记录用户访问记录等,且对外隐藏用户信息;
1.2、反向代理(B代替C借钱给A)
反向代理
-----------------------
反向代理的服务器充当服务端的网关
客户端发送请求到服务端,会先发送到反向代理服务器,由该服务器确定是否通过与组织
反向代理服务器地址,其实隐藏了真实服务器的 IP 地址
作用:
-
保证内网安全,通常将反向代理作为公网访问地址,Web 服务器是内网;
-
负载均衡,通过反向代理服务器来优化网站的负载;
1.3、四层代理与七层代理
1.3.1、四层代理
四层代理中的四层指-->OSI七层模型中的传输层
四层代理是基于IP+端口做的代理。四层通过虚拟IP+端口接收请求,然后再分配到真实的服务器。
----------------------------
TCP连接建立,即三次握手,实际上是客户端和后端服务器建立的,代理设备只是起到一个类似路由器的转发动作。
在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,在转发报文的同时可能还会对报文原来的源地址进行修改。
1.3.2、七层代理
七层代理的七层———>OSI七层模型中的应用层
七层代理是基于内容数据做的代理(理解应用层中的应用数据),最终的转发规则取决于内容的差异。现在的七层代理主要是指HTTP代理。
--------------------------
七层代理必须要先和代理设备三次握手后,才能得到七层(HTTP层)的具体内容,然后再转发。
是代理机必须要与客户端和后端服务器的机器都要建立连接。显然,七层代理对代理设备的性能要求要高于四层代理。
2、负载均衡
2.1、名称
当客户端访问服务端时,先发送请求到中间服务器,并通过中间服务器分摊到服务器群集中
用户每次所发送的请求都将会保证服务器集群中的设备均与平摊,以此来分担服务器的压力,从而保持服务器集群的整理性能最优,避免出现有崩溃的现象
2.2、作用
-
转发功能
:Nginx 会按照一定的算法轮询、权重将客户端发来的请求转发至不同的应用服务器上,同时减轻单台服务器的压力,提高服务器的并发量; -
故障迁移
:当一台服务器出现了故障时,客户端发来的请求将自动发送到其他服务器; -
添加恢复
:当故障服务器恢复正常工作时,将自动添加到处理用户请求中;
3、动静分离
Nginx处理静态页面,Tomcat处理动态页面。
4、负载均衡+动静分离实验
环境简介:
ngnix:192.168.59.108
tomcat1:192.168.59.105
tomcat2: 192.168.59.118
4.1、第一台Tomcat
---------------1. #关闭防火墙---------------------
systemctl stop firewalld
setenforce 0
2. #切换至/opt,将安装 Tomcat 所需软件包传到/opt目录下
apache-tomcat-9.0.16.tar.gz
jdk-8u201-linux-x64.rpm
3. #安装JDK
rpm -ivh jdk-8u201-linux-x64.rpm
4. #修改换将变量配置文件
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
5. #刷新配置文件
source /etc/profile
6. #切换至/opt下,解压tomcat包
cd /opt
tar -zxf apache-tomcat-9.0.16.tar.gz
7. #将解压后的包拷贝至/usr/local/下并重命名
cp -r apache-tomcat-9.0.16 /usr/local/tomcat
8. #添加用户设置属主属组
useradd -s /sbin/nologin tomcat
chown tomcat:tomcat /usr/local/tomcat -R
9. #新建服务文件
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
10. #重新加载服务,并开启,查看是否成功启动
systemctl daemon-reload
systemctl start tomcat
ss -ntap |grep 8080
#############新建动态页面站点###########3
11. #切换至webapp下,新建test目录
cd /usr/local/tomcat/webapps/
mkdir test
12. #建立动态页面文件
vim test/index.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>
13. #修改主配置文件
vim /usr/local/tomcat/conf/server.xml
删除原来的站点模块
添加
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true" xmlValidation="false"
xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/test"
path="" reloadable="true" />
</Host>
14. #重启服务,并在网页测试
systemctl restart tomcat.service
http://192.168.59.105:8080/
4.2、第二台Tomcat
1. #关闭防火墙
systemctl stop firewalld
setenforce 0
2. #切换至/opt,将安装 Tomcat 所需软件包传到/opt目录下
apache-tomcat-9.0.16.tar.gz
jdk-8u201-linux-x64.rpm
3. #安装JDK
rpm -ivh jdk-8u201-linux-x64.rpm
4. #修改环境变量配置文件
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
5. #刷新配置文件
source /etc/profile
6. #切换至/opt下,解压tomcat包
cd /opt
tar -zxf apache-tomcat-9.0.16.tar.gz
7. #将解压后的包拷贝至/usr/local/下并重命名
cp -r apache-tomcat-9.0.16 /usr/local/tomcat
8. #添加用户设置属主属组
useradd -s /sbin/nologin tomcat
chown tomcat:tomcat /usr/local/tomcat -R
9. #新建服务文件
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
10. #重新加载服务,并开启,查看是否成功启动
systemctl daemon-reload
systemctl start tomcat
ss -ntap |grep 8080
#############新建动态页面站点###########3
11. #切换至webapp下,新建test目录
cd /usr/local/tomcat/webapps/
mkdir test
12. #建立动态页面文件
vim test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test2 page </title>
</head>
<body>
<% out.println("动态页面2,http://www.test2.com");%>
</body>
</html>
13. #修改主配置文件
vim /usr/local/tomcat/conf/server.xml
删除原来的站点模块
添加
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true" xmlValidation="false"
xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/test"
path="" reloadable="true" />
</Host>
14. #重启服务,并在网页测试
systemctl restart tomcat.service
http://192.168.59.105:8080/
4.3、nginx配置
1. #切换至/usr/local/nginx/html/目录下
cd /usr/local/nginx/html/
2. #创建test文件夹,并在里面创建静态网页
mkdir test
cd test
vim test.html
this is static test web !!
3. #拖一张图片至test下改名为1.jpg
mv 1.jfif 1.jpg
4. #配置主配置文件
vim /usr/local/nginx/conf/nginx.conf
#配置负载均衡服务器列表,weight参数表示权重,权重越高,被分配到的概率越大
#gzip on;
upstream tomcat_server {
server 192.168.59.105:8080 weight=1;
server 192.168.59.118:8080 weight=1;
}
#动静分离
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 ~* .*\.(jpg|html|png|gif)$ {
root /usr/local/nginx/html/test;
}
location / {
root html;
index index.html index.htm;
}
5. #重启nginx并测试
http://192.168.59.108/1.jpg
http://192.168.59.108/test.html