网上看了好多资料还没没看明白 web 服务器和应用服务器对于一个应用具体干了什么? 就拿 Nginx 和 Passenger 来说说 web 服务器和应用服务器在 rails 应用中起了什么作用!!!求大神
这样来说:Passenger 和 Rails(也就是我们的代码打交道)Nginx 一般和 Passenger 打交道(但是偶尔一些不需要 Passenger 处理的事情 Nginx 就自己去拿资源)
#5 楼 @so_zengtao Passenger 可以解决动态和静态的,为什么还要 Nginx 呢?你所说的 Passenger 处理不了哪种问题?
这个帖子里有讨论 rails web server 的。 #35 楼的@poshboytl回复里有个文章Ruby Web 服务器:这十五年说到了:Mongrel 的定位,rack 等。就如 @so_zengtao 所说:术业有专攻
(用户) - Web Server - App Server - App
这里 Web 服务器主要负责接待客户,而 App 服务器主要用来加载 App。 Web 服务器被设计成能适应不同种类的客户端访问,不论是网络快的或者慢的,不论是人流少的还是人流多的,都能工作。 App 服务器则相反,主要是和 App 打交道,根据跑的应用的具体情况来加载应用。 最后中间用一个标准接口互联。
我打个比方吧。 比如你家里要用电,电厂 (App) 要发电。 电厂有各种不一样的,风电水电火电核电都有,电压功率都各不同。 这时候就需要在出厂的时候加一个变压器,把电的参数调整到一样,这样才能接入电网。(这就相当于 App Server) 同理客户这边有高楼有平房,有企业有家用,电压功率也都各不同。 这时候就需要在小区或者企业附近加一个变压器,分路出来给各家用。(这就相当于 Web Server) 而变压器与变压器之间则是很简单的标准化电网。(也就是 WebSvr 与 AppSvr 之间的那个统一化的 HTTP 协议)