正向代理 用户和外网不能互通,通过代理服务器将用户请求发送给外网 反向代理 用户和nginx是互通的,用户和应用服务器是不互通的,用户发送请求到nginx,nginx作为代理将请求发送给应用服务器(如tomcat等),tomcat接受nginx的请求处理好后将结果发送给nginx,nginx将结果发送给用户 如下图,是隧道式代理(瓶颈在于nginx代理服务器,即使应用服务器的带宽很大,但是如果代理服务器的带宽很小,那么请求都会阻塞到代理服务器) 反向代理和正向代理的区别是代理服务器的提供方不同,对于反向代理,nginx是由服务提供方提供的,对于正向代理,代理服务器是由用户自己提供的
如何解决隧道式代理的问题呢? DR模型: 用户发送请求到代理服务器,代理服务器正常将请求发送给应用服务器,在应用服务器处理完请求后直接将结果发送给用户,不经过代理服务器,LVS负载均衡器既可以使用DR模型,也可以使用隧道式代理模型
传统公司系统架构: 中小型互联网公司项目架构:
克隆两台虚拟机,后面配置代理内网主机和之后负载均衡的时候会用到(后面是对应的ip地址)
反向代理外网主机(以www.4399.com为例): 修改一台虚拟机(我使用的是CentOS7-1,别的也可以)的配置文件,目录为/usr/local/nginx/conf,使用proxy_pass配置外网地址,下面两行注释掉 重启nginx服务器
/usr/local/nginx/conf
在浏览器中访问这台虚拟机的ip地址,发现可以代理到外网主机 按F12查看网络部分的第一个请求,请求的URL是虚拟机的ip地址,状态码是301,表示重定向,在响应头中可以看到重定向到了www.4399.com这个地址上
反向代理内网主机(CentOS7-1代理到CentOS7-2):
修改CentOS7-2的index.html文件 目录为/usr/local/nginx/html 修改CentOS7-1的配置文件,目录为/usr/local/nginx/conf,还是使用proxy_pass,这次后面是CentOS7-2的ip地址 重启CentOS7-1,重新加载配置文件 在浏览器中访问CentOS7-1的ip地址,显示的是CentOS7-2的index.html,说明成功代理到了CentOS7-2
/usr/local/nginx/html