Je ne sais pas quel but Mongrel2 sert/fournit que nginx ne le fait pas déjà.
(Oui, j'ai lu le manuel mais je dois être trop noob pour comprendre en quoi il est fondamentalement différent de nginx)
Ma pile d'applications Web actuelle est:
- nginx : serveur Web
- Lua : langage de programmation
- FastCGI + LuaJIT : pour connecter nginx à Lua
- Postgres : base de données
Si vous ne pouviez nommer qu'une seule chose, ce serait que Mongrel2 est construit autour de ZeroMQ ce qui signifie que la mise à l'échelle de votre serveur Web n'a jamais été aussi simple.
Si une requête arrive, Mongrel2 la reçoit (rien d'inhabituel ici, comme pour NginX et tout autre httpd). La prochaine chose qui se passe est que Mongrel2 distribue la tâche de compiler une réponse à n backends (activés pour ZeroMQ), attend qu'ils fassent le travail, reçoit résultats, compile la réponse et l'envoie au client.
Maintenant, la magie réside dans le fait que n peut être n'importe quel nombre et, que chacun de n peut être écrit dans n'importe quelle langue comme pris en charge par ZeroMQ (environ 20) plus, tout va à travers le réseau afin que chaque n puisse être une boîte dédiée , éventuellement dans un autre centre de données.
En d'autres termes: avec NginX et tout le reste, vous devez faire de l'évolutivité dans votre niveau logique, Mongrel2 vous permet de démarrer (du point de vue du cycle de demande/réponse) là où la demande atteint votre infrastructure, au httpd plutôt que laisser la complexité pénétrer jusqu'à votre niveau logique, ce qui augmente la complexité d'au moins un ordre de grandeur imo.
Vous devriez regarder les points forts de chacun et décider d'utiliser l'un ou l'autre ou les deux en fonction de vos cas d'utilisation.
Bien qu'il semble que nginx fasse tout ce que mongrel2 fournit en surface, vous constaterez qu'il existe des différences majeures de mise au point entre les deux.
Nginx brille en tant que serveur Web frontal, capable de transmettre les requêtes par proxy à vos serveurs Web/serveurs d'applications backend et également de servir du contenu statique.
Mongrel2 est un léger changement dans la pile. Comme mentionné, sa puissance provient de son utilisation de zeromq comme couche de transport entre lui et les serveurs d'applications backend. Il peut servir des URL de demande dynamiques (demandes d'application) et diriger la partie de calcul de la tâche vers différents backends en utilisant zeromq .. mongrel2 vous permet de servir non seulement http, websockets, etc., mais d'autres protocoles (si vous êtes enclin à le faire ) tous à partir du même serveur. l'utilisateur ne saurait jamais que des parties de l'application sont servies à partir de différents backends.
Si vos exigences en matière de fonctionnalité de votre application Web changent constamment ou si vous souhaitez ajouter des éléments tels que le streaming, la possibilité de coder dans différentes langues dans le back-end, etc., alors je regarderais certainement mongrel2. Ou même un hybride où vous utilisez nginx/haproxy/varnish pour les fichiers statiques et la mise en cache, et tout le reste est dirigé vers mongrel2.