为啥我需要 Nginx 和 Puma?
Posted
技术标签:
【中文标题】为啥我需要 Nginx 和 Puma?【英文标题】:Why do I need Nginx with Puma?为什么我需要 Nginx 和 Puma? 【发布时间】:2018-11-04 02:46:13 【问题描述】:我正在将 Rails 应用程序部署到生产环境。看起来 Puma 速度很快,可以在 Web 服务器中处理我想要的许多事情。
我想知道我是否还需要使用 nginx,如果只使用 Puma,我会错过什么?
【问题讨论】:
Why do we need nginx with thin on production setup?的可能重复 【参考方案1】:Nginx 是 Web 服务器,puma 是应用程序服务器。 两者都有自己的优势,你需要两者。
一些例子:
静态重定向 - 您可以设置您的 nginx 以将所有 http
流量重定向到与 https
相同的 URL。这样,此类微不足道的请求将永远不会到达您的应用服务器。
分段上传 - Nginx 更适合处理分段上传。 Nginx 将合并所有请求并将其作为单个文件发送给 puma。
提供静态资产 - 建议通过网络服务器提供静态资产(Rails 中 /public/
端点中的那些),而无需加载您的应用服务器。
nginx 内置了一些基本的 DDoS 保护。
【讨论】:
【参考方案2】:Web 服务器和应用程序服务器之间存在显着差异。 Nginx (Web Server) 和 Puma (App Server) 将同时处理您的应用程序中的请求。
每当有来自客户端的请求时,它都会被 nginx 接收,然后转发到这里的 Puma 应用服务器。
将 nginx 作为 Web 服务器将帮助您更有效地处理多个请求。作为多线程服务器,它将请求分发到多个线程中,从而使您的应用程序更快。
正如供应商所说,您可以使用网络服务器提供静态页面,因为这将是一种更好的方法。
如果您要在 Web 应用程序中包含认证,那么您可以在此处提供从 http 到 https 的重定向,只有在重定向到 https 后才会访问应用服务器。
如果你打算使用 Puma,那么你必须确保服务器有效地使用资源,但如果你使用 nginx,那么它会自己处理它。
您可以获取更多信息here。
【讨论】:
答案中的链接指的是陈旧的数据,服务器的描述是在 2010 年编写的,并在 2013 年更新(不完全)。从那时起情况发生了很大变化。以上是关于为啥我需要 Nginx 和 Puma?的主要内容,如果未能解决你的问题,请参考以下文章
Puma 和 Nginx 502 Bad Gateway 错误(Ubuntu Server 14.04)
使用 Nginx、Puma 和 Redis 部署 Rails 5 Action Cable
使用 puma nginx 和 capistrano 设置 ROR 应用程序