ruta - Cómo habilitar el módulo dinámico con una instalación NGINX existente
nginx tutorial (3)
Tuve el mismo problema, tienes que instalar http_geoip_module lib para tu versión de Ubuntu con:
$ sudo apt-get install nginx-module-geoip
Introducción
Desde NGINX versión 1.9.11 y upwarts, se presenta una nueva característica: módulos dinámicos.
Con módulos dinámicos, puede cargar opcionalmente archivos de objetos compartidos separados en tiempo de ejecución como módulos, tanto módulos de terceros como algunos módulos NGINX nativos. ( fuente )
Mi configuración y el problema
Tengo NGINX instalado desde la línea principal (actualmente 1.9.14) por lo que es capaz de usar módulos dinámicos. También tiene el módulo que quiero habilitado dinámicamente:
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 ...
Tenga en cuenta el --with-http_geoip_module=dynamic
que carga el módulo que necesito (dinámicamente). Desafortunadamente, falta la documentación (algunos detalles) y no puedo configurar esto.
Tengo una instalación NGINX existente (no de la fuente). Pero por lo que puedo entender, solo necesito construir el módulo, colocar el archivo del módulo generado en la carpeta NGINX correcta y habilitarlo en el archivo de configuración.
Lo que intenté hasta ahora
Probé esto en una máquina diferente (con la misma configuración, pero no en una máquina de producción), pero no veo el archivo ngx_http_geoip_module.so
. Los comandos que utilicé:
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
Las preguntas
- ¿Es un problema que intente construir el módulo en un sistema que tiene instalado NGINX no desde la fuente?
- ¿Por qué no hay ningún archivo .so generado por mis comandos?
Tenía la misma pregunta, y la respuesta a @ vladiastudillo era la pieza faltante que necesitaba.
Primero agregue el repo estable de nginx:
sudo add-apt-repository ppa:nginx/stable
Luego ejecuta apt update:
sudo apt-get update
Y obtenga el módulo geoip nginx:
sudo apt-get install nginx-module-geoip
Esto descargará y cargará el módulo a /usr/lib/nginx/modules
Para cargar el módulo nginx,
abrir nginx.conf
:
sudo nano /etc/nginx/nginx.conf
agregue agregar abajo en el contexto principal:
load_module "modules/ngx_http_geoip_module.so";
El módulo se cargará cuando vuelva a cargar la configuración o reinicie nginx.
Para "descargar" un módulo dinámicamente, comente o elimine su directiva load_module
y vuelva a cargar la configuración de nginx.
Encontré esto ligeramente diferente en Amazon Linux 2016.09 , Amazon Linux 2016.03 después de realizar la actualización yum.
Puede confirmar esto con anticipación usando este comando en su instancia ec2 sudo yum search nginx-mod-http-geoip
y verá una entrada N/S matched: nginx-mod-http-geoip
en la respuesta con detalles de nginx-mod-http-geoip.x86_64 : Nginx HTTP geoip module
En estos casos, la versión de nginx instalada será 1.10.1
. Cuando esto sea cierto, puede instalar el módulo nipx geoip del repositorio de yum de Amazon a través de:
sudo yum install nginx-mod-http-geoip
A continuación, asocie el módulo con su nginx.conf
y coloque esta línea en el contexto principal
include /usr/share/nginx/modules/mod-http-geoip.conf;
(tenga en cuenta que esto es sutilmente diferente de la respuesta principal - en aws tiene una entrada en nginx.conf que apunta a otro archivo *.conf
que luego apunta al archivo *.so
)