En este tutorial, explicaré cómo compilar un módulo externo para Nginx para agregar funcionalidad adicional al servidor web.
Para ilustrar este tutorial, tomaré como ejemplo el módulo http-headers-more-filter que le permite modificar los encabezados (oyentes) enviados por las solicitudes HTTP.
Antes de comenzar, asegúrese de tener instalado el compilador:
sudo apt install gcc
El primer paso es verificar si el módulo está presente, ingrese el siguiente comando para verificar.
nginx -V 2>&1 | grep --color 'http-headers-more-filter'
Si el comando no devuelve nada, el módulo no está presente.
Para compilar el módulo, necesitaremos las fuentes de Nginx, recupere la versión instalada usando el comando:
nginx-V
Como se puede ver en la captura de pantalla siguiente, Nginx 1.21.0 está instalado.
Descargue las fuentes de la versión de Nginx instalada, en el ejemplo usaré el siguiente comando:
wget https://nginx.org/download/nginx-1.21.0.tar.gz
Descargue las fuentes de la versión de Nginx instalada, en el ejemplo usaré el siguiente comando:
tar -xzvf nginx-1.21.0.tar.gz
Usando el comando ll, podemos ver que el archivo está descomprimido.
Ahora debes descargar las fuentes del módulo. las fuentes del módulo de oyentes-más están disponibles aquí: openresty/headers-more-nginx-module: Set, add, and clear arbitrary output headers in NGINX http servers (github.com).
Clonamos el repositorio usando el comando git:
git clone https://github.com/openresty/headers-more-nginx-module.git
Luego haga una lista para verificar que el repositorio esté clonado.
Dependiendo de los módulos que desees, pueden ser necesarias dependencias, aquí necesitas instalar los siguientes paquetes:
- libpcre3-dev
- zlib1g
sudo apt install libpcre3-dev zlib1g
Vaya a la carpeta que contiene las fuentes de Nginx:
cd nginx-1.21.0
Ahora configuraremos la compilación del módulo usando el siguiente comando:
./configure --add-dynamic-module=../headers-more-nginx-module
Adapte la ruta del parámetro –add-dynamic-module= que desea compilar.
Una vez configurada la compilación, compílala con el comando:
make modules
El módulo está compilado, el archivo .so del módulo se encuentra en la carpeta objs de la carpeta fuente de Nginx.
Ahora debe mover el archivo .so a la carpeta /etc/nginx/modules. Una vez que se ha movido el archivo, debes decirle a Nginx que cargue el módulo.
Abra el archivo nginx.conf y agregue la instrucción load_module.
load_module modules/ngx_http_header_more_filter_modules.so
Luego reinicie Nginx
sudo systemctl restart nginx
Ahora sabes cómo compilar un módulo externo para Nginx.