Je déploie une application Rails en production. Il semble que Puma soit rapide et gère la plupart des choses que je veux sur un serveur Web.
Je me demande si j'ai même besoin de m'embêter avec Nginx, et que manquerais-je si je n'utilisais que Puma?
Nginx est un serveur web et puma est un serveur d'applications. Les deux ont leurs avantages, et vous avez besoin des deux.
Quelques exemples:
Redirection statique - vous pouvez configurer votre nginx pour rediriger tout le trafic http
vers la même URL avec https
. De cette façon, de telles requêtes triviales ne toucheront jamais votre serveur d'applications.
Téléchargement en plusieurs parties - Nginx est mieux adapté pour gérer les téléchargements en plusieurs parties. Nginx combinera toutes les demandes et les enverra sous forme de fichier unique à puma.
Servir des actifs statiques: il est recommandé de servir des actifs statiques (ceux de /public/
endpoint dans Rails) via un serveur Web sans charger votre serveur d'applications.
Il existe des protections DDoS de base intégrées dans nginx.
Il existe une différence significative entre un serveur Web et un serveur d'applications. Nginx (Web Server) et Puma (App Server) traiteront les demandes dans votre application simultanément.
Chaque fois qu'il y a une demande provenant d'un client, elle sera reçue par le nginx et ensuite elle sera transmise au serveur d'applications qui est Puma ici.
Le fait d'avoir nginx comme serveur Web vous aidera à gérer plusieurs demandes de manière beaucoup plus efficace. En tant que serveur multithread, il distribuera les demandes en plusieurs threads, ce qui rendra votre application plus rapide.
Comme mentionné par vendant, vous pouvez servir des pages statiques à l'aide d'un serveur Web car ce sera une meilleure approche.
Si vous souhaitez inclure une certification à votre application Web, vous pouvez fournir des redirections de http vers https ici qui ne frapperont le serveur d'application qu'après la redirection vers https.
Si vous allez utiliser Puma, vous devez vous assurer que le serveur utilise efficacement les ressources, mais si vous utilisez nginx, il s'en occupera de lui-même.
vous pouvez obtenir plus d'informations ici .