我正在将Rails应用程序部署到生产环境中。似乎Puma很快并且在Web服务器中处理了我想要的许多东西。
我想知道我是否需要打扰Nginx,如果只使用Puma,我会错过什么?
答案 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。