Añadir módulos de nginx en Linux

Cómo recompilar nginx con módulos adicionales en Debian, Ubuntu y CentOS.

Cuando nginx se instala a través del gestor de paquetes del sistema operativo, no es posible añadir ni eliminar módulos — nginx se entrega con una configuración de build fija. Para incluir un módulo personalizado, nginx debe recompilarse manualmente desde el código fuente.

Paso 1. Obtener la configuración nginx actual

Ejecuta el siguiente comando y guarda la salida en un editor de texto — la necesitarás durante el paso de configuración:

nginx -V

Ejemplo de salida:

nginx version: nginx/1.12.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
configure arguments: --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf
--error-log-path=/var/log/nginx/error.log ...

En este ejemplo está instalada la versión 1.12.1 — descarga esa misma versión en el siguiente paso.

Paso 2. Descargar el código fuente de nginx

wget http://nginx.org/download/nginx-1.12.1.tar.gz

Extrae el archivo y entra en el directorio de fuentes:

tar -xvf nginx-1.12.1.tar.gz
cd nginx-1.12.1

Paso 3. Instalar el módulo PageSpeed

bash <(curl -f -L -sS https://ngxpagespeed.com/install) \
     --nginx-version $nginxversion

Guardar todos los módulos:

bash <(curl -f -L -sS https://ngxpagespeed.com/install) -m

Paso 4. Configurar nginx con el nuevo módulo

En la salida guardada de nginx -V, copia los argumentos de configuración desde --prefix= hasta (sin incluir) el primer --add-module= — las entradas --add-module= existentes no son necesarias.

Ejecuta ./configure con esos argumentos y añade --add-dynamic-module=/root/incubator-pagespeed-ngx-latest-stable al final:

./configure --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-client-body-temp-path=/var/lib/nginx/body \
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
--http-log-path=/var/log/nginx/access.log \
--http-proxy-temp-path=/var/lib/nginx/proxy \
--lock-path=/var/lock/nginx.lock \
--pid-path=/var/run/nginx.pid \
--with-pcre-jit --with-http_gzip_static_module \
--with-http_ssl_module --with-ipv6 \
--without-http_browser_module --with-http_geoip_module \
--without-http_memcached_module --without-http_referer_module \
--without-http_scgi_module --without-http_split_clients_module \
--with-http_stub_status_module --without-http_ssi_module \
--without-http_userid_module --without-http_uwsgi_module \
--add-dynamic-module=/root/incubator-pagespeed-ngx-latest-stable

Nuestros servicios y productos

HostingFunciona en discos NVMe ultrarrápidos. Apto para sitios web de cualquier complejidad.
Pedir
VPSParámetros ajustables y configuración flexible del SO. Administración gratuita incluida.
Pedir
Servidores dedicadosDisponibles diversas configuraciones Supermicro con procesadores Intel y AMD.
Pedir

Paso 5. Compilar nginx

make
make install

Una vez finalizada la compilación, verifica que el nuevo módulo esté presente:

/etc/nginx/sbin/nginx -V

La salida debe incluir --add-dynamic-module=/root/incubator-pagespeed-ngx-latest-stable.

Paso 6. Reemplazar el binario de nginx

Detén nginx:

service nginx stop

Renombra el binario actual como punto de retorno:

mv /usr/sbin/nginx /usr/sbin/nginx_back

Mueve el binario recién compilado a su lugar:

mv /etc/nginx/sbin/nginx /usr/sbin/nginx

Elimina el directorio que ya no es necesario:

rm -rf /etc/nginx/sbin

Verifica que el nuevo binario esté en uso:

nginx -V

La salida debe incluir --add-dynamic-module=/root/incubator-pagespeed-ngx-latest-stable.

Inicia nginx:

service nginx start

Elimina el directorio de fuentes:

cd ../
rm -rf nginx-1.12.1

Ayuda

¿Tienes dudas o necesitas ayuda? Escríbenos a través del sistema de tickets — siempre estamos aquí para ayudarte!

¿Necesitas ayuda?Nuestros ingenieros te ayudarán gratuitamente con cualquier pregunta en minutosContáctanos