为什么我需要 Nginx 和 Puma?

Why do I need Nginx with Puma?

我正在将 Rails 应用程序部署到生产环境。看起来 Puma 速度很快并且可以处理我想要在 Web 服务器中处理的许多事情。

我想知道我是否需要为 Nginx 烦恼,如果只使用 Puma 我会错过什么?

Nginx 是一个网络服务器,puma 是一个应用程序服务器。 两者各有优势,两者都需要。

一些示例:

  • 静态重定向 - 您可以设置 nginx 将所有 http 流量重定向到与 https 相同的 url。这样,这种微不足道的请求将永远不会到达您的应用服务器。

  • 分段上传- Nginx 更适合处理分段上传。 Nginx 将合并所有请求并将其作为单个文件发送给 puma。

  • 提供静态资产- 建议通过网络服务器提供静态资产(rails 中 /public/ 端点中的资产)而不加载您的应用程序服务器。

  • nginx 内置了一些基本的 DDoS 保护。

Web 服务器和应用程序服务器之间存在显着差异。 Nginx(Web 服务器)和 Puma(应用服务器)将同时处理您应用程序中的请求。

每当有来自客户端的请求,它都会被nginx接收,然后转发给应用服务器,这里是Puma。

将 nginx 作为 Web 服务器将帮助您更有效地处理多个请求。作为多线程服务器,它将请求分配到多个线程中,使您的应用程序更快。

正如 vendant 所提到的,您可以使用 Web 服务器提供静态页面,因为这是一种更好的方法。

如果您要为您的 Web 应用程序添加认证,那么您可以在此处提供从 http 到 https 的重定向,只有在重定向到 https 后才会访问应用服务器。

如果您要使用 Puma,那么您必须确保服务器有效地使用资源,但如果您要使用 nginx,那么它会自行处理。

您可以获得更多信息here