快看Apache那个二道贩子(1)

一提到Apache,你首先想到的是什么呢?

可能是旗下有众多优秀开源的软件的Apache这个基金会

大名鼎鼎的开源Http Server -- Apache

Apache这个英文单词

...

我们在下面提到的Apache,都是指Apache Http Server。同时标题中的二道贩子无任何贬义色彩,只用于在特定的场景下说明其工作原理。

(所以,我们不是标题党哦!!!)

最近几天,后台有不少朋友问到关于Apache整合Tomcat,实现反向代理和负载均衡的问题。不少人是已经配置了一大部分,但不能实现请求跳转。还有的则是听说过有这么回事,但并不清楚这一过程究竟是在做些什么,只是网上找些文章,拼一拼,结果也还是功能不正常,甚至于启动异常。

本文打算从原理上来分析下代理、其实现方式,这一过程中可能出现的问题及我的解决方式。

要分析原理,首先要了解这一配置整合中都涉及到的内容。下面我们逐项来了解下。

代理

我们常常说代理,但代理究竟是什么呢?

比如我们经常听到商家在呼喊,「我是XXX金牌代理商」。

那在买某个商家产品的时候,我们实际上也并没有直接和产品的生产商进行购买,而更多的是和这类的或真或假的金、银代理商进行购买,甚至是找代理商的下级代理商购买。

而本质上要实现Apache和Tomcat整合,并使Apache在接收到需要Tomcat来处理的Servlet请求,就转给Tomcat来处理这一过程,也是让Apache做为Tomcat代理的过程。我们可以把Apache看成Tomcat这个厂家的X牌代理商。我们的请求都从代理商这进行,具体背后Apache和Tomcat如何交互,这一过程对我们是透明的。

在这样的配置中,访问的客户并不能感知Apache向Tomcat转发这一过程。这种我们一般称之为反向代理,英名名是Reverse Proxy。你一听马上要抢答道:「那一定有正向代理啦」。

Yes!

反向代理还有个孪生兄弟,叫前向代理或正向代理,英文名是Forward Proxy。

既然说是孪生兄弟,这哥俩怎么区分呢?有啥关键的区别点?比如说大哥的眉心有个黑痣。:)开个玩笑。

我们用生活中比较熟悉的场景来举例说明下。

比如我们想要访问facebook.com,由于不可抗因素,这一网站并不能访问。为了跳出去看看,你买了一个工具。每次要访问国外这类网站时,你在浏览器中简单配置一下,就能看到外面的花花世界。

公司为了让员工努力工作,上班时间把社交网络给屏蔽了,在下班的时间则可以访问。

每个公司基本都会提供内部论坛,网络等供员工内部交流使用。这类公司内部的内容,通过外部网络是无法访问的。公司为了方便员工在家时获取信息,单独提供了一个对外的代理服务。平时在家时可以通过对外的服务访问信息。

以上三个场景,场景1和场景2就是我们说到的前向代理。场景3则是反向代理。

总结一下就是:

在前向代理中,代理和客户端位于同一网内,配置作用于客户端。是我们为了请求目标所设置的特殊配置。

在反向代理中,代理是和服务位于同一网内,用于保护服务的,作用于服务端的配置。而所谓反向,是指代理从服务处获取内容再提供给客户,这一方向与前向是相反的,帮称为反向。

本文是第一篇,讨论了代理,以及前向和反向代理的区别。

由于的阅读习惯,我把文章尽量写短一些。在后面的文章中,再分析Apache的配置等。

如果感觉有用,请推荐给你的朋友! 欢迎关注。