Apache、Nginx和IIS有什么区别?

8
我曾经是一名Java Web应用程序开发者,现在转而使用.NET框架进行工作。
在Java Web时代,我们使用Tomcat/JBoss来部署我们的应用程序。我认为Tomcat/JBoss是Web服务器。
在ASP.NET中,我使用IIS来部署应用程序,因此我认为IIS是另一种Web服务器。
最近我在学习Rails,然后听说了Nginx。从谷歌上查到它也是一种Web服务器。
然而,我发现有些人说我们可以同时使用Nginx和IIS,或其他组合。
现在,我感到困惑了,因为在我看来,一个Web服务器应该处理客户端的请求并返回结果。
每个Web服务器都应该有自己的适用场景,例如Tomcat适用于Java,IIS适用于ASP.NET。
但为什么还要使用Apache/Nginx?
顺便说一下,我并不是认为Apache/Nginx没有用处,只是我不太熟悉它们。
我想知道是否有人能为我解释一下?

一个真实的网络系统,例如亚马逊门户网站可能由几个扮演不同角色的Web服务器组成。在这种情况下,根据它们的特性可以使用不同的Web服务器软件。例如,Nginx适用于Apache或IIS的反向代理。 - Lex Li
1个回答

13
首先,"Web服务器"只是一种通过http(s)协议提供内容的软件。这是最基本的功能。所以你可以使用很多附加功能...
JBoss/Tomcat不仅仅是一个"Web服务器",Tomcat提供了使Java应用程序响应发送到该服务器的请求的功能,而JBoss则提供了将您的软件部署到生产环境中的特殊技术,等等。
所有这些产品都具有"Web服务器"功能,但它们在http请求后面发生的事情上有所区别,这就是生成"答案"的东西。
为了让您更加困惑,您可以在Apache Web服务器上运行ASP.NET(必须使用支持"执行.NET代码"的设施进行扩展)。当然,您还可以构建所有这些产品的组合,因为代理可以使用http协议。例如,您可以使用Apache Web服务器作为客户端访问点,该访问点对某个数据库进行身份验证,然后将请求转发到仅允许来自Apache的连接的防火墙IIS服务器。因此,您可以实现可能不受您的Windows服务器支持的认证(或负载平衡器)...
希望这能解决一些问题...
Rob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接