学习nginx反向代理的功能及使用方法前,先要了解什么是正向代理和反向代理,以及他们的作用,这对于接下来学习负载均衡十分必要。
一、正向代理与反向代理
1.代理服务器
代理服务器就是位于发起请求的客户端与原始服务器端之间的一台跳板服务器,正向代理可以隐藏客户端,反向代理可以隐藏原始服务器。
2.正向代理
正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。
如下图1所示,内部服务器Server-A需要与互联网上的服务器 Server-B通信,但是A不希望把自己的内部IP地址和源端口暴露到互联网,以免产生安全隐患。因此A通过代理服务器(设备)Proxy-C,与互联网上的服务器B进行通信。
图1-正向代理
3.反向代理
反向代理的工作原理是,代理服务器来接受客户端的网络访问连接请求,然后服务器将请求有策略的转发给网络中实际工作的业务服务器,并将从业务服务器处理的结果,返回给网络上发起连接请求的客户端。
反向代理有以下优点:
(1)提高了内部服务器的安全;
(2)加快了对内部服务器的访问速度;
(3)节约了有限的IP资源。
如下图2所示,客户端Client-A想要访问www.tonglaoban.com,访问请求通过地址解析后,发送到IP地址为1.1.1.1:80的代理服务器,通过代理服务器的正向代理以及负载均衡功能,最终的访问请求通过轮询(暂时只讨论轮询的负载均衡)的方式分发到Server-A、Server-B、Server-C。
图2-反向代理
二、实验环境
图3-实验环境
三、配置实例
1.实例1--反向代理基本配置
1.实现效果
打开浏览器,输入www.tonglaoban.com,通过nginx代理服务器(192.168.116.11)的80端口,跳转到真是tomcat服务器(192.168.116.12)的8080端口。
2.准备工作
(1)在linux系统中安装tomcat服务,使用默认端口8080。
(2)安装tomcat之前需要检查linux服务器的java环境。
图4-实验过程
如服务器没有安装java环境,需要先安装,本次以通过yum源安装的方式作为示例,该安装方式可以直接将其他依赖文件一并安装:
图5-实验过程
安装成功后,再次查看java版本:
图6-实验过程
(3)安装tomcat,Tomcat安装文件放到linux系统中,解压/usr/src/apache-tomcat。
图7-实验过程
(4)进入tomcat的bin目录中,./start.sh启动,进入log目录中,查看日志。
图8-实验过程
(5)打开网页查看状态http://192.168.116.13:8080/
图9-实验过程
3.反向代理配置
(1)配置域名解析
(2)在以下路径C:\Windows\System32\drivers\etc找到host文件,并增加内容:
(3)192.168.116.11 www.tonglaoban.com
(4)在nginx进行请求转发的配置(反向代理配置),配置文件在/usr/local/nginx/conf,编辑nginx.conf:
图10-实验过程
修改配置文件,并保存好,切记要重启nginx服务。
图11-实验过程
结果如下:
图12-实验过程
(5)如果希望更直观的看到测试效果,可以在tomcat服务器增加测试页面,在/usr/src/apache-tomcat-7.0.70/webapps路径中,新建test112文件夹,文件夹中新建test112.html文件:
图13-实验过程
效果如下:
图14-实验过程
2.实例2--根据不同uri分配到不同服务器
1.实现效果:
根据不同uri分配到不同服务器(或端口),监听9001端口
http://192.168.116.11:9001/8080分配到192.168.116.12:8080
http://192.168.116.11:9001/8081分配到192.168.116.13:8081
2.准备工作
(1)准备两个tomcat服务器,一个8080端口,一个8081端口。
在/usr/src/apache-tomcat-7.0.70/conf路径,编辑server.xml文件:
图15-实验过程
新建test文件夹,文件夹中新建test.html文件,如实例1填写IP地址。
图16-实验过程
3.配置nginx代理服务
对外监听端口为9001,根据不同uri,分配到不同应用tomcat服务器。
http://192.168.116.11:9001/8080分配到192.168.116.12:8080
http://192.168.116.11:9001/8081分配到192.168.116.13:8081
在nginx配置文件中,新建server块配置如下:
图17-实验过程
重启nginx服务。
图18-实验过程
4.测试结果
访问http://192.168.116.11:9001/8080/test.html
图19-实验过程
访问http://192.168.116.11:9001/8081/test.html
图20-实验过程