根据定义,puma是一种Web服务器,机架是Web服务器与应用程序服务器之间的接口。
但是,很多视频提到机架是Web框架和Web服务器之间的接口。那么我可以解释为我们使用Web框架来构建应用程序,那么机架是Web框架和Web服务器之间的接口吗?
另一个问题是,如果puma是一种Web服务器,我可以使用Apache或Nginx替换它吗?
答案 0 :(得分:1)
Puma是应用程序服务器,更具体地说是Rack应用程序服务器。 (不仅仅是Puma:Unicorn,Passenger等。还有用于不同接口的应用程序服务器;例如Tomcat和JBoss是Java应用程序服务器。)应用程序服务器接受HTTP请求,将其解析为应用程序结构中的结构。语言,将其交给应用程序,然后等待响应对象,然后将其返回给客户端。
Nginx / Apache是通用Web服务器。 Apache不知道如何为Rack应用程序提供服务,而Puma不知道如何进行Nginx / Apache的其他操作(例如CGI脚本,URL重写,代理,平衡,列入黑名单...)
Rack是Ruby的库,它接受来自应用服务器的已解析HTTP请求,通过可配置的中间件堆栈(例如,会话处理)将请求漏斗传递给处理程序,然后将响应对象返回给应用服务器,使使用Ruby进行Web开发变得容易。您可以直接执行Rack应用程序(或者使用Rack安装的非常简单的服务器执行),但是不建议在外部开发中使用,这是“合适的”应用程序服务器的所在:它们知道如何使应用程序保持活动状态,如果它死了,请重新启动它,并确保有预定数量的线程在运行,诸如此类。
因此,通常,您要让Web服务器接受连接,然后使用simple reverse proxy将适当的请求传递给正在Rack应用服务器内部执行的Rack应用。这使您从所有涉及的部分中受益。