应用程序服务器v / s HTTP服务器

时间:2014-05-04 06:42:33

标签: web-services web-applications unicorn haskell-warp

所以我注意到各种应用服务器的文档(想想Unicorn,Puma for Ruby,Warp for Haskell等)总是提到类似于“它被优化为app服务器”的东西。通常在描述标准时会提到这一点。设置在app服务器前面的反向代理中使用HTTP服务器(如Ngnix)。

所以我的问题是:Web应用程序服务器的编程究竟是什么使得提供代码v / s HTTP服务器生成的数据的性能更高?有没有特别的工程权衡?或者更多的情况是HTTP服务器针对从磁盘提供文件进行了优化,因此他们只是试图说HTTP服务器没有针对应用程序代码进行优化?

1 个答案:

答案 0 :(得分:1)

首先,这确实属于ServerFaultSuperUser

但基本上,Apache& Nginx严格提供静态Web内容。是的,你可以安装PHP作为模块和&它会在请求页面时解析脚本。但这一切都是随需应变的。这意味着只有在请求页面时程序才会运行。

相比之下,应用程序服务器一直运行在内存中活动的程序。根据您希望系统执行的操作,可以获得一些工程优势。所以Tomcat或Passenger(用于Ruby)运行Java& Ruby应用程序,并针对生产服务器环境进行了优化。

为什么Apache或Nginx作为前端附加?因为在一天结束时Apache& Nginx仍然是简单地提供Web内容的最佳工具。并且有更好的优化和安全到位。

因此,应用程序服务器专注于使Java或Ruby尽可能干净地运行。提供基本的网络内容。和Apache& Nginx专注于网络传输的前端。

作为系统管理员,我更喜欢通过Apache或Nginx代理,因为我已经知道如何配置&优化这些工具供我使用。如果我必须学习如何微调Passenger或Tomcat,它应该只允许我运行它,所以我可以放置Apache或Nginx。