A partir de la version 1.9.11 et des versions ultérieures de NGINX, une nouvelle fonctionnalité est introduite: les modules dynamiques.
Avec les modules dynamiques, vous pouvez éventuellement charger des fichiers d’objets partagés distincts au moment de l’exécution en tant que modules - modules tiers et certains modules NGINX natifs. ( source )
J'ai installé NGINX à partir de la ligne principale (actuellement la version 1.9.14), ce qui lui permet d'utiliser des modules dynamiques. Il contient également le module que je souhaite activer de manière dynamique:
nginx -V
nginx version: nginx/1.9.14
built by gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.1)
built with OpenSSL 1.0.1f 6 Jan 2014
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules ... --with-http_geoip_module=dynamic ...
Noter la --with-http_geoip_module=dynamic
qui charge le module dont j'ai besoin (dynamiquement). Malheureusement, la documentation manque (quelques détails) et je ne parviens pas à la configurer.
J'ai une installation NGINX existante (pas à partir des sources). Mais pour autant que je sache, il me suffit de construire le module, de placer le fichier de module généré dans le bon dossier NGINX et de l'activer dans le fichier de configuration.
J'ai testé cela sur une machine différente (avec la même configuration, mais pas une machine de production), mais je ne vois pas le ngx_http_geoip_module.so
fichier. Les commandes que j'ai utilisées:
wget http://nginx.org/download/nginx-1.9.14.tar.gz
tar -xzf nginx-1.9.14.tar.gz
cd nginx-1.9.14/
./configure --with-http_geoip_module=dynamic
J'avais la même question et @vladiastudillo a répondu qu'il me manquait.
Commencez par ajouter le repo nginx stable:
Sudo add-apt-repository ppa:nginx/stable
Puis lancez apt update:
Sudo apt-get update
Et obtenez le module nginx geoip:
Sudo apt-get install nginx-module-geoip
Ceci téléchargera et chargera le module sur /usr/lib/nginx/modules
Pour charger le module nginx,
open nginx.conf
:
Sudo nano /etc/nginx/nginx.conf
ajouter ajouter ci-dessous dans le contexte principal:
load_module "modules/ngx_http_geoip_module.so";
Le module sera chargé lors du rechargement de la configuration ou du redémarrage de nginx.
Pour "décharger" dynamiquement un module, commenter ou supprimer son load_module
directive et recharger la configuration de nginx.
Nous avons trouvé que cela était légèrement différent sur Amazon Linux 2016.09, Amazon Linux 2016.03 après la mise à jour yum.
Vous pouvez le confirmer à l’avance en utilisant cette commande sur votre instance ec2 Sudo yum search nginx-mod-http-geoip
et vous verrez un N/S matched: nginx-mod-http-geoip
entrée dans la réponse avec les spécificités de nginx-mod-http-geoip.x86_64 : Nginx HTTP geoip module
Dans ces cas, la version de nginx installée sera 1.10.1
. Lorsque cela est vrai, vous pouvez simplement installer le module nginx geoip à partir du référentiel yum existant d'Amazon via:
Sudo yum install nginx-mod-http-geoip
Associez ensuite le module à votre nginx.conf
et en plaçant cette ligne dans le contexte principal
include /usr/share/nginx/modules/mod-http-geoip.conf;
(notez que cela diffère légèrement de la réponse principale. Dans aws, vous avez une entrée dans nginx.conf qui pointe vers un autre *.conf
fichier qui pointe ensuite vers le *.so
fichier)
J'ai eu le même problème, vous devez installer la lib http_geoip_module pour votre version d'ubuntu avec:
$ Sudo apt-get installez nginx-module-geoip