根据定义,puma 是一种 web 服务器,rack 是 web 服务器和应用服务器之间的接口。
但是,很多视频都提到机架是 Web 框架和 Web 服务器之间的接口。那么我可以解释为我们使用 web 框架来构建我们的应用程序,所以机架是 web 框架和 web 服务器之间的接口吗?
另一个问题是,如果 puma 是一种网络服务器,我可以使用 Apache 或 Nginx 来代替它吗?
Puma 是一个应用服务器,更具体地说是一个Rack应用服务器。(不仅仅是Puma:Unicorn、Passenger等,还有不同接口的应用服务器,比如Tomcat和JBoss就是Java应用服务器。)一个应用服务器接受一个HTTP请求,将它解析成应用程序中语言,将它交给应用程序,并等待一个响应对象,然后它返回给客户端。
Nginx/Apache 是通用 Web 服务器。Apache 不知道如何为 Rack 应用程序提供服务,而 Puma 也不知道如何做 Nginx/Apache 做的许多其他事情(例如 CGI 脚本、URL 重写、代理、平衡、黑名单……)
Rack 是一个用于 Ruby 的库,它接受来自应用服务器的已解析 HTTP 请求,通过可配置的中间件堆栈(例如会话处理)将请求对象传递给处理程序,并将响应对象返回应用服务器,从而使 Web Ruby 开发很简单。您可以直接执行 Rack 应用程序(或者更确切地说,使用安装了 Rack 的非常简单的服务器),但不建议在开发之外进行,这是“合适的”应用程序服务器的用武之地:它们知道如何让您的应用程序保持活动状态, 如果它死了就重新启动它,保证有预定数量的线程在运行,诸如此类。
因此,通常,您让您的 Web 服务器接受连接,然后使用简单的反向代理将适当的请求传递给您的 Rack 应用程序,该应用程序在 Rack 应用程序服务器内执行。这为您提供了所有相关部分的好处。
| 归档时间: |
|
| 查看次数: |
959 次 |
| 最近记录: |