正向代理: 当用户想访问某一网址时,用户先访问代理服务器,然后由代理服务器向目标网址发送请求最终将数据返回代理服务器,最后代理服务器将数据返回给用户这一过程我们称之为正向代理。
反向代理:基本流程是与正向代理是相同的,都是通过 用户发送请求 -->代理服务器-->目标服务器。但是二者的区别在于正向代理时用户知道自己访问的是代理服务器,而反向代理是无感知的,用户本质上是不知道自己访问的是代理服务器。
动静分离(基于7层反向代理实验):
实验准备:
准备三台虚拟机:
192.168.22.10 tomcat(两个实例) 8080端口和8081端口
192.168.169.11 tomcat
192.168.169.13 nginx(7层反向代理)
①192.168.22.10做两个tomcat实例(实验步骤在上一篇)和他们的的文件配置
这里需要在两个tomcat的webapps里面添加一个test/index.jsp(这是动态文件)
mkdir /usr/local/tomcat/webapps/test
vim /usr/local/tomcat/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>
更改tomcat的conf文件,将根目录改了
vim /usr/local/tomcat/conf/server.xml
#由于主机名 name 配置都为 localhost,需要删除前面的 HOST 配置
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true">
</Context>
</Host>
更改tomcat1的conf文件
②在192.168.22.11 做tomcat的文件配置
③部署192.168.22.13的 七层反向代理Nginx server
这里注意最后三条必须要加(不然动态页面报错400):
proxy_set_header HOST $host;(设定后端的Web服务器接收到的请求访问的主机名)
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都记录下来
④验证:访问192.168.22.13/test/index.jsp
反向代理的调度算法:
负载均衡:(四层反向代理+七层反向代理)
目前所有的都已经安装nginx和tomcat
192.168.22.10 tomcat(两个)
192.168.22.11 tomcat
192.168.22.13 七层反向代理(nginx)
192.168.22.14 七层反向代理(nginx)
192.168.22.12 四层反向代理(nginx)
自己电脑 客户机
以上已经做完了三个tomcat后端服务器了,现在需要再做一个7层代理服务器和一个4层代理服务器就可以解决了。
首先再次创建一个7层代理nginx服务器(看上面)
然后创建一个4层代理服务器做负载用:
①创建一个nginx,然后编译安装时候安装--with-stream模块(开启stream模块)
./configure --prefix=/usr/local/nginx --user=ngxin --group=nginx --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-stream
②更改nginx.conf文件(stream模块和http模块同级)
测试访问:192.168.22.12
192.168.22.12:81/test/index.jsp
192.168.22.12:81/index.html 注意 有65秒连接保持时间