concat: Módulo de concatenación HTTP para NGINX
Instalación
Puedes instalar este módulo en cualquier distribución basada en RHEL, incluyendo, pero no limitado a:
- RedHat Enterprise Linux 7, 8, 9 y 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 y Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-concat
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-concat
Habilita el módulo añadiendo lo siguiente en la parte superior de /etc/nginx/nginx.conf:
load_module modules/ngx_http_concat_module.so;
Este documento describe nginx-module-concat v1.2.3 lanzado el 15 de enero de 2020.
Introducción
Este es un módulo que se distribuye con
tengine, que es una distribución de
Nginx que es utilizada por el sitio de comercio electrónico/subasta
Taobao.com. Esta distribución
contiene algunos módulos que son nuevos en la escena de Nginx. El
módulo ngx_http_concat es uno de ellos.
El módulo está inspirado en el
modconcat de Apache. Sigue el mismo
patrón para habilitar la concatenación. Utiliza dos ?, así:
http://example.com/??style1.css,style2.css,foo/style3.css
Si hay un tercer ?, se trata como una cadena de versión. Así:
http://example.com/??style1.css,style2.css,foo/style3.css?v=102234
Ejemplo de configuración
location /static/css/ {
concat on;
concat_max_files 20;
}
location /static/js/ {
concat on;
concat_max_files 30;
}
Directivas del módulo
concat on | off
predeterminado: concat off
contexto: http, server, location
Habilita la concatenación en un contexto dado.
concat_types tipos MIME
predeterminado: concat_types: text/css application/x-javascript
contexto: http, server, location
Define los tipos MIME que pueden ser concatenados en un contexto dado.
concat_unique on | off
predeterminado: concat_unique on
contexto: http, server, location
Define si solo se pueden concatenar archivos de un tipo MIME dado o si
se pueden concatenar varios tipos MIME. Por ejemplo, si se establece en off
entonces en un contexto dado puedes concatenar archivos de Javascript y CSS.
Ten en cuenta que el valor predeterminado es on, lo que significa que solo se concatenan archivos con el mismo
tipo MIME en un contexto dado. Así que si tienes CSS y
JS no puedes hacer algo como esto:
http://example.com/static/??foo.css,bar/foobaz.js
Para hacer eso debes establecer concat_unique off. Esto se aplica
a cualquier otro tipo de archivos que decidas concatenar añadiendo
el respectivo tipo MIME a través de concat_types.
concat_max_files número
predeterminado: concat_max_files 10
contexto: http, server, location
Define el número máximo de archivos que pueden ser concatenados en un contexto dado. Ten en cuenta que una URI dada no puede ser más grande que el tamaño de página de tu plataforma. En Linux puedes obtener el tamaño de página emitiendo:
getconf PAGESIZE
Generalmente es 4k. Así que si intentas concatenar muchos archivos juntos en
un contexto dado, podrías alcanzar esta barrera. Para superar esa limitación definida por el SO, debes usar
la directiva large_client_header_buffers.
Establece el valor que necesites.
concat_delimiter: cadena
predeterminado: NINGUNO
contexto: http, server, location
Define el delimitador entre dos archivos. Si la configuración es concat_delimiter "\n", se insertaría un '\n' entre 1.js y 2.js cuando se visite http://example.com/??1.js,2.js
concat_ignore_file_error: on | off
predeterminado: off
contexto: http, server, location
Si se debe ignorar el 404 y 403 o no.
Etiquetado de lanzamientos
Perusio está manteniendo un lanzamiento etiquetado en http://github.com/alibaba/nginx-http-concat sincronizado con los lanzamientos de Tengine. Consulta allí para las últimas etiquetas no comprometidas.
Otros módulos de tengine en GitHub
-
footer filter: permite agregar algunos datos extra (marcado o no) al final de un cuerpo de solicitud. Es práctico para cosas como agregar marcas de tiempo u otras cosas diversas sin tener que modificar tu aplicación.
-
http slice: permite servir un archivo por partes. Una especie de rango de bytes inverso. Útil para servir archivos grandes sin saturar la red.
Otras compilaciones
-
Como se mencionó al principio, este módulo es parte de la
tenginedistribución de Nginx. Así que podrías querer ahorrarte algo de trabajo y simplemente construirlo desde cero usandotengineen lugar de la fuente oficial de Nginx. -
Si te interesa un paquete de Nginx de última generación (de los lanzamientos de desarrollo) para Debian hecho a medida, entonces podrías estar interesado en el paquete HA/HP debian de Nginx con soporte incorporado para nginx-http-concat. Las instrucciones para usar el repositorio y hacer que el paquete funcione felizmente dentro de una instalación de distribución estable están proporcionadas.
GitHub
Puedes encontrar consejos adicionales de configuración y documentación para este módulo en el repositorio de GitHub para nginx-module-concat.