区分nginx和thin

13
这是一个关于在Rails环境中使用Nginx和Thin的新手问题。在学习Rails时,我经常听说Nginx和Thin组合在Rails网站中非常出色。在阅读它们的描述时,它们都自称为Web服务器,因此我有点困惑这种组合会带来什么优势。如果有人能简要描述一下它们是什么以及它们如何相互补充,我将不胜感激。谢谢!
3个回答

25

一个典型的小型应用程序部署将在一台机器上运行Nginx(或Apache)和少量的Thin(或Mongrel,Unicorn等)服务器。

Nginx接收每个请求。它直接提供静态文件(如css、js、图像、缓存内容)。如果请求需要处理,它会将请求转交给rails进程(Thin)。

这样,相对较慢的应用程序服务器就不必为提供静态文件而忙碌,而您的Web服务器则提供了一种负载均衡的方式。

Nginx/Thin相比于像Apache/Mongrel之类的东西的好处在于,Nginx/Thin可以通过Unix套接字直接通信,从而消除了通过TCP/IP协议栈进行通信所带来的开销。


10
更直接地回答这个问题:Nginx是一个Web服务器。它提供静态文件服务,并将非静态请求路由到您的应用程序服务器。Thin是一种应用程序服务器,它实际上使用您的Rails/Rack应用程序处理请求。 - Alan Peabody

4

Thin是一个应用服务器,而Nginx是一个Web服务器。

来源于http://www.javaworld.com/javaqa/2002-08/01-qa-0823-appvswebserver.html

应用服务器通过各种协议(可能包括HTTP)向客户端应用程序公开业务逻辑。而Web服务器主要处理发送HTML以在Web浏览器中显示,应用服务器提供访问业务逻辑的方式,供客户端应用程序使用。应用程序可以像调用对象上的方法(或过程化世界中的函数)一样使用此逻辑。


2

从我的无知角度出发(我从未使用过Thin),将nginx和应用服务器混合在一起,使用nginx提供静态内容并作为应用服务器的反向代理是很正常的。

这使得极快的静态内容服务与所选应用服务器(不同的编程语言之间有所不同)轻松混合在一起,所有内容都来自同一个地址:端口。


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