【发布时间】:2018-11-04 02:46:13
【问题描述】:
我正在将 Rails 应用程序部署到生产环境。看起来 Puma 速度很快,可以在 Web 服务器中处理我想要的许多事情。
我想知道我是否还需要使用 Nginx,如果只使用 Puma,我会错过什么?
【问题讨论】:
标签: ruby-on-rails nginx puma
我正在将 Rails 应用程序部署到生产环境。看起来 Puma 速度很快,可以在 Web 服务器中处理我想要的许多事情。
我想知道我是否还需要使用 Nginx,如果只使用 Puma,我会错过什么?
【问题讨论】:
标签: ruby-on-rails nginx puma
Nginx 是 Web 服务器,puma 是应用程序服务器。 两者都有自己的优势,你需要两者。
一些例子:
静态重定向 - 您可以设置您的 nginx 以将所有 http 流量重定向到与 https 相同的 URL。这样,此类微不足道的请求将永远不会到达您的应用服务器。
分段上传 - Nginx 更适合处理分段上传。 Nginx 将合并所有请求并将其作为单个文件发送给 puma。
提供静态资产 - 建议通过网络服务器提供静态资产(Rails 中 /public/ 端点中的那些),而无需加载您的应用服务器。
nginx 内置了一些基本的 DDoS 保护。
【讨论】:
Web 服务器和应用程序服务器之间存在显着差异。 Nginx (Web Server) 和 Puma (App Server) 将同时处理您的应用程序中的请求。
每当有来自客户端的请求时,它都会被 nginx 接收,然后转发到这里的 Puma 应用服务器。
将 nginx 作为 Web 服务器将帮助您更有效地处理多个请求。作为多线程服务器,它将请求分发到多个线程中,从而使您的应用程序更快。
正如供应商所说,您可以使用网络服务器提供静态页面,因为这将是一种更好的方法。
如果您要在 Web 应用程序中包含认证,那么您可以在此处提供从 http 到 https 的重定向,只有在重定向到 https 后才会访问应用服务器。
如果你打算使用 Puma,那么你必须确保服务器有效地使用资源,但如果你使用 nginx,那么它会自己处理它。
您可以获取更多信息here。
【讨论】: