web-dev-qa-db-fra.com

Comment activer le module dynamique avec une installation NGINX existante

Introduction

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 )

Ma configuration et le problème

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.

Ce que j'ai essayé jusqu'à présent

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

Questions

  • Est-ce un problème que je tente de construire le module sur un système sur lequel NGINX est installé et non à partir du code source?
  • Pourquoi n'y a-t-il pas de fichier .so généré par mes commandes?
26
yoano

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.

26
miyuru

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)

5
Peter Jones

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

2
vladiastudillo