BLOG | NGINX

Présentation des modules dynamiques dans NGINX 1.9.11

NGINX-Partie-de-F5-horiz-black-type-RGB
Andrew Hutchings Miniature
Andrew Hutchings
Publié le 09 février 2016


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.

Les modules statiques sont compilés dans l'exécutable NGINX pour activer les modules dynamiques avec NGINX
Les modules statiques sont compilés dans l'exécutable NGINX

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.

Les modules dynamiques NGINX sont compilés dans un objet partagé de module binaire distinct
Les modules dynamiques sont compilés dans un objet partagé de module binaire distinct

Chargement dynamique des modules NGINX

Dans la première version, les modules et ensembles de modules NGINX suivants peuvent être créés de manière dynamique :

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.

Conversion de modules tiers

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 .

L'avenir des modules dynamiques

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."