咱们常常据说反向代理这个概念,既然有反向代理,那么就应该有正向代理,那什么是正向代理呢?以下图所示,所谓的正向代理是指当用户发起请求时没法直接访问到某个网站(好比咱们常常要访问外网),须要通过一个中间服务器,用户将请求发给中间服务器,中间服务器能够访问用户想要访问的网站,中间服务器将用户的请求转发给想要访问的网站,而后再将那个网站响应的结果再返回给用户,这就是正向代理。
而后,咱们再来看下反向代理,以下图所示,通常状况下,一个大型网站都是由多个服务器组成的,好比某个网站是由三个Tomcat服务器组成的集群对外提供服务,那么当用户发送一个请求后,应该是由哪一个Tomcat服务器对外提供服务呢?这就是nginx反向代理所要作的事情,nginx会帮咱们自动找一个Tomcat服务器来处理咱们的请求,用户根本就不须要关心。
网站入口就是公网ip,公网ip就是你去注册域名时的那个ip地址(一级域名所对应的),只有这一个,所以我们只能经过这个公网ip(网站入口)进行反向代理。nginx
注意,反向代理服务器决定哪台服务器对外提供服务,而它是不对外提供服务的,它只不过是将请求进行转发。web
下面我就按照下图所描述的来配置反向代理。
由于只是学习反向代理,因此这儿我就只使用了一台虚拟机,并且最好这台虚拟机安装有JDK环境,而且还得提早将Tomcat服务器的压缩包上传上去。浏览器
咱们如今要配置反向代理,应该至少要有两个Tomcat服务器,因此要建立两个Tomcat服务器实例,以下图所示。
而后将这两个Tomcat服务器的端口号给改一下,使每一个Tomcat服务器运行在不一样的端口上。咱们先到tomcat8081的conf目录下修改server.xml文件,依次修改下面这三段配置中的port属性的值,以下所示。tomcat
接着进入tomcat8082的conf目录下修改server.xml文件,依次修改下面这三段配置中的port属性的值,以下所示。服务器
紧接着咱们便要在nginx服务器上配置下反向代理了,即在nginx.conf配置文件中添加以下的一段内配置。
从上图中能够看到使用的域名为www.sina.com.cn
和www.sohu.com
,所以咱们须要在hosts文件中添加对应的映射关系,以下图所示(你们根据本身虚拟机的实际ip地址来配置啊)。
nginx的配置文件修改了以后,要想让其生效,应该怎么办呢?咱们须要重启服务或者是从新加载配置文件,使用的命令是./nginx -s reload
。app
为了区分出咱们访问的Tomcat服务器究竟是属于哪一个,能够给每一个Tomcat服务器的首页加上一个标志,即修改(tomcat8081/tomcat8082)/webapps/ROOT目录下的index.jsp页面,tomcat8081这个Tomcat服务器的修改以下图所示,能够看到在原来的信息后面加上了---tomcat8081
字样。
tomcat8082这个Tomcat服务器的修改以下图所示,能够看到在原来的信息后面加上了---tomcat8082
字样。
最后,咱们启动两个Tomcat服务器,先在浏览器地址栏输入www.sina.com.cn
并回车,能够看到咱们访问到了tomcat8081这个Tomcat服务器的首页。
再访问www.sohu.com
,能够看到访问到的是tomcat8082这个Tomcat服务器的首页,这说明咱们的反向代理配置的没问题。
webapp