Aujourd'hui, nous avons publié la version open source NGINX 1.9.11 , avec une nouvelle fonctionnalité qui, selon nous, aura un impact énorme sur la façon dont vous utilisez NGINX et NGINX Plus : les modules dynamiques . Avec les modules dynamiques, vous pouvez éventuellement charger des fichiers d’objets partagés distincts lors de l’exécution en tant que modules, à la fois des modules tiers et certains modules NGINX natifs. La nouvelle implémentation maintient autant que possible la compatibilité descendante avec l'API du module.
Éditeur – Dans NGINX 1.11.5 et versions ultérieures (et NGINX Plus R11 et versions ultérieures), vous pouvez compiler des modules dynamiques sans compiler également le binaire NGINX complet. Pour obtenir des instructions, consultez Compilation de modules dynamiques pour NGINX Plus .
La prochaine version de NGINX Plus (NGINX Plus R9) s'appuiera sur cette fonctionnalité de modules dynamiques. Nous prévoyons d’établir un référentiel de modules NGINX gérés avec une gamme de modules tiers que nous avons testés et certifiés par rapport à NGINX Plus, ce qui vous permettra d’ajouter plus facilement des extensions courantes à NGINX Plus en toute confiance. Si vous souhaitez que vos modules open source ou commerciaux soient inclus dans notre référentiel, veuillez nous contacter via le lien Contacter le service commercial .
Jusqu'à présent, si vous vouliez créer un module pour NGINX, vous deviez le compiler dans un binaire NGINX avec le code source NGINX. Le module a été chargé avec NGINX à chaque fois, que vous le vouliez ou non. Pour les empaqueteurs de distributions de systèmes d'exploitation, cela rendait très difficile la création de binaires NGINX personnalisés pour chaque utilisateur.
Dans la première version des modules dynamiques, vous devez toujours compiler les modules NGINX facultatifs en même temps que le binaire NGINX, mais vous créez également un objet partagé distinct pour chaque module chargé dynamiquement et utilisez une directive dans le fichier de configuration NGINX pour activer et désactiver le chargement de l'objet partagé au moment de l'exécution.
Dans la première version, les modules et ensembles de modules NGINX suivants peuvent être créés de manière dynamique :
ngx_http_geoip_module
)ngx_http_image_filter_module
)ngx_mail_{ core , auth , imap , pop3 , proxy , smtp , ssl }_module
)ngx_stream_{ core , access , limit_conn , proxy , ssl , upstream }_module
e)ngx_http_xslt_module
)Pour générer les objets partagés chargeables dynamiquement, ajoutez =dynamic
à l' argument standard du module --with_
:
# ./configure --with-http_geoip_module=dynamique --with-http_image_filter_module=dynamique --with-mail=dynamique --with-stream=dynamique --with-http_xslt_module=dynamique
Lorsque vous installez le code source de NGINX 1.9.11, il existe un nouveau sous-répertoire appelé modules et le processus de construction y place les objets binaires partagés. Par défaut, le chemin est /usr/local/nginx/modules .
Pour charger un module lors de l'exécution, incluez la nouvelle directive load_module
dans le contexte principal, en spécifiant le chemin d'accès au fichier objet partagé pour le module, placé entre guillemets. Lorsque vous rechargez la configuration ou redémarrez NGINX, le module dynamique est chargé. Vous pouvez spécifier un chemin relatif au répertoire source, comme dans ces exemples, ou un chemin complet.
load_module "modules/ngx_http_geoip_module.so";load_module "modules/ngx_stream_module.so";
Pour « décharger » dynamiquement un module, commentez ou supprimez sa directive load_module
et rechargez la configuration NGINX. Si d'autres directives dans le fichier concernent le module que vous déchargez, n'oubliez pas de les commenter ou de les supprimer également.
Pour les développeurs de nombreux modules traditionnels tiers, la conversion au chargement dynamique nécessite très peu de travail. Dans de nombreux cas, vous n'avez besoin de modifier que le fichier de configuration du code source de votre module. D'autres modules nécessiteront un peu plus de travail. Le wiki NGINX comprend un guide de conversion de module et des informations détaillées sur le format du fichier de configuration source du module .
Pour compiler un module tiers qui a été converti, utilisez le nouvel argument --add-dynamic-module
et spécifiez le chemin :
# ./configure --add-dynamic-module= /chemin/vers/la/source/du/module
Comme avec les modules NGINX, un objet partagé est créé et installé dans le sous-répertoire modules , et vous ajoutez une directive load_module
pour celui-ci à la configuration NGINX. Notre équipe de relations avec les développeurs est disponible pour vous aider à convertir un module. Contactez-nous via la liste de diffusion de développement NGINX .
Dans les versions futures, nous prévoyons d'ajouter la possibilité de compiler des modules après la compilation du binaire NGINX. Nous sommes également en train de documenter l'API du module et cette documentation sera disponible gratuitement sur le wiki NGINX une fois terminée.
Pour tester vous-même les modules dynamiques, téléchargez NGINX 1.9.11 .
Pour essayer NGINX Plus, démarrez votre essai gratuit de 30 jours dès aujourd'hui ou contactez-nous pour discuter de vos cas d'utilisation.
« Cet article de blog peut faire référence à des produits qui ne sont plus disponibles et/ou qui ne sont plus pris en charge. Pour obtenir les informations les plus récentes sur les produits et solutions F5 NGINX disponibles, explorez notre famille de produits NGINX . NGINX fait désormais partie de F5. Tous les liens NGINX.com précédents redirigeront vers un contenu NGINX similaire sur F5.com."