这是一个关于 nginx 的新手问题,并且在 rails 环境中很薄。在阅读/学习 Rails 时,我经常听说 nginx 和 Thin 是 rails 网站的绝佳组合。在阅读每个人的描述时,他们都将自己描述为 Web 服务器,所以我对这种组合带来的结果有点困惑。如果有人能简要描述它们是什么以及它们如何相互补充,我将不胜感激。
谢谢!
这是一个关于 nginx 的新手问题,并且在 rails 环境中很薄。在阅读/学习 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 提供静态内容并充当应用程序服务器的反向代理。
这使得将可笑的快速静态内容服务与选择的应用程序服务器(在编程语言之间有所不同)混合起来变得很容易,所有这些都来自同一个地址:端口。