加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 19:49:33 所属栏目:百科 来源:网络整理
导读:我经常阅读关于Nginx和Mongrel一起使用.有人可以向我解释他们是如何不同的?为什么需要Mongrel?为什么Nginx直接与许多Rails服务器通信是不可取的? 解决方法 两者都是Web服务器,但是它们的焦点不一样: Mongrel基本上是一个呈现HTTP接口的Ruby应用服务器.它
我经常阅读关于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代码提供了一种方式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读