为什么我需要与Puma一起使用Nginx?

时间:2018-05-24 19:19:49

标签: ruby-on-rails nginx puma

我正在将Rails应用程序部署到生产环境中。似乎Puma很快并且在Web服务器中处理了我想要的许多东西。

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

2 个答案:

答案 0 :(得分:12)

Nginx是一个Web服务器,puma是一个应用服务器。 两者都有其优点,你需要两者。

一些例子:

  • 静态重定向 - 您可以设置nginx,将所有http流量重定向到https的同一网址。这样一些琐碎的请求永远不会打到您的应用服务器。

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

  • 提供静态资产 - 建议在不加载应用服务器的情况下,通过网络服务器提供静态资产(位于导轨中/public/端点的资产)。

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

答案 1 :(得分:5)

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

每当有来自客户端的请求时,它将被nginx接收,然后它将被转发到Puma的应用服务器。

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

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

如果您要在网络应用程序中添加认证,那么您可以在此处提供从http到https的重定向,只有在重定向到https后才能点击应用服务器。

如果您要使用Puma,那么您必须确保服务器正在有效地使用资源,但如果您使用nginx,那么它将通过以下方式处理:本身。

您可以获得更多信息here