Nous avons publié aujourd’hui la version open source NGINX 1.9.11, avec une nouvelle fonctionnalité qui transformera votre utilisation de NGINX et de NGINX Plus : les modules dynamiques. Les modules dynamiques vous permettent désormais de charger, si vous le souhaitez, des fichiers objets partagés séparés à l’exécution, qu’il s’agisse de modules tiers ou de certains modules natifs NGINX. Nous avons conçu cette nouveauté pour assurer, autant que possible, une compatibilité ascendante avec l’API des modules.
É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) développera cette fonctionnalité de modules dynamiques. Nous allons créer un référentiel géré de modules NGINX incluant une sélection de modules tiers que nous avons testés et certifiés pour NGINX Plus, afin que vous puissiez ajouter facilement des extensions courantes à NGINX Plus en toute sérénité. Si vous souhaitez intégrer vos modules open source ou commerciaux dans notre référentiel, contactez-nous via le lien Contact Sales.
Jusqu’à présent, pour créer un module destiné à NGINX, vous deviez le compiler directement dans un binaire NGINX avec le code source. Le module se chargeait systématiquement avec NGINX, que vous en ayez besoin ou non. Les mainteneurs de distributions de systèmes d’exploitation rencontraient ainsi de grandes difficultés à produire des 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
Quand vous installez le code source de NGINX 1.9.11, une nouvelle sous-répertoire nommé modules apparaît, et le processus de compilation y place les objets binaires partagés. Par défaut, le chemin est /usr/local/nginx/modules.
Pour charger un module à l'exécution, ajoutez la nouvelle directive load_module
dans le contexte principal en indiquant, entre guillemets, le chemin vers le fichier objet partagé du module. Lorsque vous rechargez la configuration ou redémarrez NGINX, le module dynamique se charge automatiquement. Vous pouvez indiquer un chemin relatif au répertoire source, comme dans ces exemples, ou un chemin absolu.
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 tiers traditionnels, la conversion vers le chargement dynamique demande très peu d’efforts. Souvent, il vous suffit de modifier le fichier config du code source de votre module. Certains modules nécessiteront un peu plus d’attention. Le Wiki NGINX propose un guide de conversion des modules ainsi que des informations détaillées sur le format du fichier config du code 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/le/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."