这是一个很低的问题,因为我从来没有真正理解它,所以我想要一个解释:
目前, 我对这个问题的理解是有限的(可能是错误的) 。Apache是一个http web服务器(在这种情况下,它就像一个反向代理(?)),Thin是一个ruby web应用服务器。 为什么他们是什么样的,他们是如何工作的,有些回避我。
措辞可能是非常混乱的(例如,networking服务器与networking应用程序服务器,等等…(有点像“主机”或“主机名”可能会非常混乱))。 如果我在网上find的所有阅读材料对我来说都不是很清楚的话,我可以去哪里去发展我对“正在解决的问题的最低限度的理解”?
Thin或Passenger或WEBrick或任何其他此类Web服务器都有一个目的。 它从networking获取HTTP请求并将其传递给Rack ,并将应用程序的响应返回到networking。
(通常,Rack被用作一个完整的Ruby应用程序的一个组件,用Rails或Sinatra等框架编写,它通过自己的中间件处理传入的HTTP请求,并确保它们被路由到正确的应用程序代码。
Thin发送到Rack之后请求发生的事情一般都不是Thin的问题; 这是应用程序和应用程序开发人员的关注点。
Ruby Web服务器通常放在更传统的Web服务器(如Apache或nginx)后面的原因是为了提高性能。 Ruby Web服务器是用Ruby编写的,经过优化,可以处理它所服务的应用程序堆栈。 特别是快速提供静态资产不一定非常好。 在通常的生产环境中,传统的Web服务器将为静态资产提供服务, Rails在部署或初次访问期间预先编译为rake任务 ,Thin(或者您所select的服务器)会将所有其他内容传递给应用程序。 因此,单独运行Thin仅适用于开发环境,因为性能通常不存在问题。 这不是我们会做的事情。 (通常WEBrick是用于这个目的,因为它是Rails应用程序的默认Web服务器。)
作为系统pipe理员,我们通常不关心应用程序代码,但在某些情况下,您将需要与开发人员一起评估几个可能的Ruby Web服务器中的哪一个应该与给定的应用程序一起使用。 虽然作为一般规则,从应用的angular度来看,它们应该是可以互换的。