WebServer Vs ApplicationServer

简介: 出现过几次被客户要求既有项目为什么不能单独部署WebServer和ApplicationServer的问题,他们用的例子无非就是Apache+Tomcat,他们称之为前面为WebServer,后面为ApplicationServer,问我们的IIS为什么不能这样部署。

出现过几次被客户要求既有项目为什么不能单独部署WebServer和ApplicationServer的问题,他们用的例子无非就是Apache+Tomcat,他们称之为前面为WebServer,后面为ApplicationServer,问我们的IIS为什么不能这样部署。现说明如下:

 

首先,webserver和applicationserver的概念是出现在分布式系统中的,它们的具体责任如下:

         webserver:负责处理客户端请求,然后远程调用applicationserver上的服务。

         Applicationserver:公开服务给webserver。

 

但我们往往对webserver和applicationserver存在一些误解,很多人对两者的分类依赖于程序的宿主。以JAVA平台为例,不少人会将Apache所在的服务器称作webserver,而将Tomcat\Jboos\Websphere\Weblogic所在的服务器称之为applicationserver。

大部分的应用程序或者网站,都没有复杂到可以称之为分布式应用程序。在很多架构中,Tomcat\Jboos\Websphere\Weblogic仅仅作为可以解析java代码的一个平台(虽然它可以部署在不同的服务器上)。在这种情况下,我们也不能将这个平台称之为applicationserver,而应该称之为webserver的一个httpmodule(物理机之间的转发也应该这样去理解)。

同理,在微软平台下,对于C#代码(asp.net)的解析,已经作为一个默认的httpmodule集成在IIS(5.5及以后版本)中了,一般我们也不将它们物理分割开,所以造成的假象是微软平台下仿佛没有webserver和applicationserver之分。实际的情况是,如果应用系统本身不是一个分布式架构,想要区分webserver和applicationserver就是一个错误的概念。如果一定要把请求和httpmodule物理分割,类似apache+tomcat,那么在微软平台下,也可以是:

Apache+IIS

当然,还有其它的选择,如:

Varnish+IIS

甚至是:

IIS+IIS

即,前者是一个代理服务器,后台加一个动态内容解析服务器(httpmodule)。代理服务器的作用是负责转发http请求,静态内容缓存等,动态内容解析服务器的作用如其名字:解析程序脚本,加载动态内容。

 

EL不是一个分布式系统,所以,经过上面的解释,我们知道,它不存在什么webserver和applicationserver,某某指明,业界中的普遍做法为:

将HTTP服务器放置在外网或DMZ,AP和DB都需要在内网。

更为准确的描述应该为:

对于非分布式系统,如EL系统,可以将代理服务器放置在DMZ区,IIS和DB放置在内网。

对于分布式系统,将HTTP服务器放置在外网或DMZ,AP和DB都需要在内网。

 

         所以,对于EL系统,我们当前的选择是:需要一个代理服务器吗?一般我们选择代理服务器的理由是:

         1:负载均衡;

         2:静态内容缓存;

         按照某某的说法,仿佛这种方法还出于安全的考虑,即:采用代理服务器后,安全提升了。之所以出现这种误解:是因为往往代理服务器和动态内容解析服务器之间可以加一层防火墙。而实际的情况是,防火墙也可以加在代理服务器和动态内容解析服务器之前,所以说,代理服务器和动态内容解析服务器并不能带来本质上的安全提升。

Creative Commons License本文基于 Creative Commons Attribution 2.5 China Mainland License发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 http://www.cnblogs.com/luminji(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言。
目录
相关文章
|
8月前
|
应用服务中间件 nginx
nginx: [emerg] duplicate location “/“ in /usr/local/etc/nginx/nginx.conf:142
nginx: [emerg] duplicate location “/“ in /usr/local/etc/nginx/nginx.conf:142
171 0
|
容器 网络安全
|
容器 网络安全
|
Shell 应用服务中间件 nginx
|
监控 应用服务中间件 PHP
|
前端开发 应用服务中间件 PHP
|
Web App开发 Java 关系型数据库
|
缓存 Java 应用服务中间件