ruby-on-rails – Nginx和Mongrel之间的区别?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Nginx和Mongrel之间的区别?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我经常阅读关于Nginx和Mongrel一起使用.有人可以向我解释他们是如何不同的?为什么需要Mongrel?为什么Nginx直接与许多Rails服务器通信是不可取的?

解决方法

两者都是Web服务器,但是它们的焦点不一样:

Mongrel基本上是一个呈现HTTP接口的Ruby应用服务器.它有一件事,请求,将其传递到您的红宝石代码,并在http中提供答案.它不处理并发或任何性能相关的功能.一个杂种意味着有一个可以处理请求的红宝石进程.
> Nginx是一款功能齐全的Web服务器,旨在表演.它可以在静态文件上提供高性能,无法直接处理Ruby,Python或任何其他语言.它依赖于FastGCI或代理其他应用程序服务器来做到这一点.

要清楚,你的rails应用程序本身是不可直接使用的,它需要你可以调用一个容器(我建议你读一些约http://rack.github.com/),在这种情况下是Mongrel.当您运行rails控制台时,通常是webrick,我们在Ruby中最基本的Web“app”服务器(它是标准库的一部分).

那我们为什么在前面使用Nginx呢?我们假设我们只使用Mongrel:我们在一个mongrel实例上进行侦听,侦听端口80.如果你的请求需要500毫秒来完成,你可以每秒处理2个客户端.但是这显然还不够.让我们再发一个混杂的例子.但是,由于我们已经使用了第一个端口,所以我们不能在80端口上听,我们无法做到这一点.

所以我们需要一些可以处理多个Mongrel实例的东西,通过仍然监听端口80.你扔在一个Nginx服务器中,将(代理)将请求发送给你的许多杂项实例,你现在可以添加更多的实例来服务更多客户同时进行.

返回回答您的问题,将Nginx与rails服务器通信,意味着启动一个或多个Mongrel(或Thin / Unicorn,无论服务器可用),并通知Nginx必须将请求传递给他们.在使用Passenger之后,主要的rails服务是一个受欢迎的模式,它为Apache工作人员处理ruby代码提供了一种方式.

猜你在找的Ruby相关文章