En effet, le fait que nginx ne supporte pas de modules 'dynamiques' est quelque peu contraignant, mais cela se fait au profit d'une architecture de module beaucoup plus simple que apache par exemple.
De plus, cela a certains avantages ici :
nginx est capable de faire un 'reload' SANS perdre les connexions actives, de par l'architecture worker / master process utilisée. On peux donc faire une upgrade de nginx avec 0 downtime
l'utilisation de librairies dynamiques/partagés a un impact en termes de performances (nginx a été notamment écrit pour gérer le problème dit des C10K
enfin, le fonctionnement, et la coordination nécessaire entre les modules (de part le mode de fonctionnement de nginx) rendrait le maintien de l'API complexe
finalement, l'utilisation d'un modèle statique permet de réduire au maximum les librairies embarquées
De plus, nginx fonctionne comme une machine à état asynchrone, ce qui implique une architecture et un code assez particulier, puisque une grande partie du code doit être ré-entrante.
[^] # Re: nginx et la modularité
Posté par bui . En réponse à la dépêche NAXSI, un module de filtrage HTTP pour nginx. Évalué à 10.
Bonjour,
En effet, le fait que nginx ne supporte pas de modules 'dynamiques' est quelque peu contraignant, mais cela se fait au profit d'une architecture de module beaucoup plus simple que apache par exemple.
De plus, cela a certains avantages ici :
nginx est capable de faire un 'reload' SANS perdre les connexions actives, de par l'architecture worker / master process utilisée. On peux donc faire une upgrade de nginx avec 0 downtime
l'utilisation de librairies dynamiques/partagés a un impact en termes de performances (nginx a été notamment écrit pour gérer le problème dit des C10K
enfin, le fonctionnement, et la coordination nécessaire entre les modules (de part le mode de fonctionnement de nginx) rendrait le maintien de l'API complexe
finalement, l'utilisation d'un modèle statique permet de réduire au maximum les librairies embarquées
De plus, nginx fonctionne comme une machine à état asynchrone, ce qui implique une architecture et un code assez particulier, puisque une grande partie du code doit être ré-entrante.
voila !