这是一个关于在Rails环境中使用Nginx和Thin的新手问题。在学习Rails时,我经常听说Nginx和Thin组合在Rails网站中非常出色。在阅读它们的描述时,它们都自称为Web服务器,因此我有点困惑这种组合会带来什么优势。如果有人能简要描述一下它们是什么以及它们如何相互补充,我将不胜感激。谢谢!
一个典型的小型应用程序部署将在一台机器上运行Nginx(或Apache)和少量的Thin(或Mongrel,Unicorn等)服务器。
Nginx接收每个请求。它直接提供静态文件(如css、js、图像、缓存内容)。如果请求需要处理,它会将请求转交给rails进程(Thin)。
这样,相对较慢的应用程序服务器就不必为提供静态文件而忙碌,而您的Web服务器则提供了一种负载均衡的方式。
Nginx/Thin相比于像Apache/Mongrel之类的东西的好处在于,Nginx/Thin可以通过Unix套接字直接通信,从而消除了通过TCP/IP协议栈进行通信所带来的开销。
Thin是一个应用服务器,而Nginx是一个Web服务器。
来源于http://www.javaworld.com/javaqa/2002-08/01-qa-0823-appvswebserver.html
应用服务器通过各种协议(可能包括HTTP)向客户端应用程序公开业务逻辑。而Web服务器主要处理发送HTML以在Web浏览器中显示,应用服务器提供访问业务逻辑的方式,供客户端应用程序使用。应用程序可以像调用对象上的方法(或过程化世界中的函数)一样使用此逻辑。
从我的无知角度出发(我从未使用过Thin),将nginx和应用服务器混合在一起,使用nginx提供静态内容并作为应用服务器的反向代理是很正常的。
这使得极快的静态内容服务与所选应用服务器(不同的编程语言之间有所不同)轻松混合在一起,所有内容都来自同一个地址:端口。