我正在将一个Rails应用程序部署到生产环境。看起来Puma快速且处理了我想要的Web服务器的许多功能。
我在想,如果只使用Puma,是否需要去烦恼Nginx,以及如果不使用Nginx会错过哪些内容?
我正在将一个Rails应用程序部署到生产环境。看起来Puma快速且处理了我想要的Web服务器的许多功能。
我在想,如果只使用Puma,是否需要去烦恼Nginx,以及如果不使用Nginx会错过哪些内容?
Nginx是一个Web服务器,而Puma则是一个应用服务器。 两者都有各自的优势,你需要同时使用它们。
以下是一些例子:
静态重定向 - 你可以设置Nginx将所有http
流量重定向到相同的https
网址。这样这些琐碎的请求就永远不会影响你的应用服务器。
多部分上传 - Nginx更适合处理多部分上传。Nginx将汇总所有请求并将其作为单个文件发送给Puma。
提供静态资产 - 建议通过Web服务器来提供静态资产(在Rails中的/public/
端点),而无需加载你的应用服务器。
Nginx内置了一些基本的DDoS保护措施。
Web服务器和应用程序服务器之间存在显著差异。Nginx(Web服务器)和Puma(应用服务器)将同时处理您应用中的请求。
当客户端发送请求时,它将被nginx接收,然后转发到应用服务器Puma。
使用nginx作为Web服务器将帮助您更有效地处理多个请求。作为多线程服务器,它会将请求分配到多个线程中,使您的应用程序更快。
正如vendant所述,你可以使用Web服务器提供静态页面来实现更好的效果。
如果要向您的Web应用程序中添加认证,则可以在此处提供从http到https的重定向,这将在重定向到https后仅命中应用程序服务器。
如果您要使用Puma,则必须确保服务器有效使用资源,但如果您使用nginx,则它会自行处理。
您可以在这里获取更多信息。