substitutions: Módulo de sustituciones de cadenas 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-substitutions
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-substitutions
Habilita el módulo añadiendo lo siguiente en la parte superior de /etc/nginx/nginx.conf:
load_module modules/ngx_http_subs_filter_module.so;
Este documento describe nginx-module-substitutions v0.6.6 lanzado el 30 de diciembre de 2021.
nginx_substitutions_filter Nota: este módulo no se distribuye con el código fuente de Nginx. Las instrucciones de instalación se pueden encontrar a continuación.
Descripción nginx_substitutions_filter es un módulo de filtro que puede realizar sustituciones de expresiones regulares y de cadenas fijas en los cuerpos de respuesta. Este módulo es bastante diferente del Módulo de Sustitución nativo de Nginx. Escanea el búfer de cadenas de salida y coincide con las cadenas línea por línea, al igual que el mod_substitute de Apache (http://httpd.apache.org/docs/trunk/mod/mod_substitute.html).
Ejemplo location / {
subs_filter_types text/html text/css text/xml;
subs_filter st(\d*).example.com $1.example.com ir;
subs_filter a.example.com s.example.com;
subs_filter http://$host https://$host;
}
Directivas * subs_filter_types
* subs_filter
subs_filter_types sintaxis: *subs_filter_types mime-type [mime-types] *
predeterminado: *subs_filter_types text/html*
contexto: *http, server, location*
*subs_filter_types* se utiliza para especificar qué tipos de contenido
deben ser verificados para *subs_filter*, además de *text/html*. El
predeterminado es solo *text/html*.
Este módulo solo funciona con texto plano. Si la respuesta está
comprimida, no puede descomprimir la respuesta y ignorará esta
respuesta. Este módulo puede ser compatible con el módulo de filtro gzip.
Pero no funcionará con respuestas comprimidas por proxy. Puedes desactivar
la respuesta comprimida de esta manera:
proxy_set_header Accept-Encoding "";
subs_filter sintaxis: *subs_filter source_str destination_str [gior] *
predeterminado: *ninguno*
contexto: *http, server, location*
*subs_filter* permite reemplazar la cadena de origen (expresión regular o
fija) en la respuesta de nginx con la cadena de destino. Las variables
en el texto coincidente solo están disponibles en modo de cadena fija, lo
que significa que el texto coincidente no puede contener variables si es
una expresión regular. El texto de sustitución puede contener variables.
Se admite más de una regla de sustitución por ubicación.
El significado de las terceras banderas es:
* *g* (predeterminado): Reemplazar todas las cadenas coincidentes.
* *i*: Realizar una coincidencia sin distinción entre mayúsculas y
minúsculas.
* *o*: Solo reemplazar la primera.
* *r*: El patrón se trata como una expresión regular, el
predeterminado es una cadena fija.
subs_filter_bypass sintaxis: subs_filter_bypass $variable1 ...
predeterminado: *ninguno*
contexto: *http, server, location*
Puedes especificar varias variables con esta directiva. Si al menos una
de las variables no está vacía y no es igual a '0', este filtro de
sustitución se desactivará.
Instalación Para instalar, obtén el código fuente con subversion:
git clone
git://github.com/yaoweibin/ngx_http_substitutions_filter_module.git
y luego compila nginx con la siguiente opción:
./configure --add-module=/path/to/module
Problema conocido * No se puede sustituir el encabezado de respuesta.
CAMBIOS Cambios con nginx_substitutions_filter 0.6.4 2014-02-15
* Ahora las respuestas no 200 funcionarán
* se agregó la directiva subs_filter_bypass
Cambios con nginx_substitutions_filter 0.6.2 2012-08-26
* se corrigió un error de superposición de búfer
* se corrigió un error con el último búfer cero
Cambios con nginx_substitutions_filter 0.6.0 2012-06-30
* refactorización de este módulo
Cambios con nginx_substitutions_filter 0.5.2 2010-08-11
* se realizaron muchas optimizaciones para este módulo
* se corrigió un error de superposición de búfer
* se corrigió un error de fallo de segmento cuando la cadena de salida
devuelve NGX_AGAIN.
* se corrigió un error sobre el último búfer sin salto de línea. Esto
puede causar un fallo de segmento. Gracias a Josef Fröhle
Cambios con nginx_substitutions_filter 0.5 2010-04-15
* refactorización de la estructura de origen, crear ramas de desarrollo
* se corrigió un error de pequeños fragmentos de búfer que causaban
pérdida de contenido
* se corrigió el error de last_buf y la compatibilidad de nginx por
encima de 0.8.25
* se corrigió un error con un error de configuración de captura no
deseada en la sustitución de cadena fija
* se agregó la función de capturas de regex
Cambios con nginx_substitutions_filter 0.4 2009-12-23
* se corrigieron muchos errores
Cambios con nginx_substitutions_filter 0.3 2009-02-04
* Lanzamiento público inicial
Reportar un error Preguntas/parches pueden ser dirigidos a Weibin Yao, yaoweibin@gmail.com.
Copyright & Licencia Este módulo está licenciado bajo la licencia BSD.
Copyright (C) 2014 por Weibin Yao <[email protected]>.
Todos los derechos reservados.
La redistribución y el uso en formas de código fuente y binario, con o sin
modificaciones, están permitidos siempre que se cumplan las siguientes
condiciones:
*
Las redistribuciones del código fuente deben retener el aviso de
copyright anterior, esta lista de condiciones y el siguiente
descargo de responsabilidad.
*
Las redistribuciones en forma binaria deben reproducir el aviso de
copyright anterior, esta lista de condiciones y el siguiente
descargo de responsabilidad en la documentación y/o en otros
materiales proporcionados con la distribución.
ESTE SOFTWARE SE PROPORCIONA POR LOS TITULARES DE COPYRIGHT Y
COLABORADORES "TAL CUAL" Y CUALQUIER GARANTÍA EXPRESA O IMPLÍCITA,
INCLUYENDO, PERO NO LIMITÁNDOSE A, LAS GARANTÍAS IMPLÍCITAS DE
COMERCIABILIDAD Y ADECUACIÓN PARA UN PROPÓSITO PARTICULAR, SE
DESACONSEJAN. EN NINGÚN CASO LOS TITULARES DE COPYRIGHT O
COLABORADORES SERÁN RESPONSABLES POR CUALQUIER DAÑO DIRECTO, INDIRECTO,
INCIDENTAL, ESPECIAL, EJEMPLAR O CONSECUENTE (INCLUYENDO, PERO NO
LIMITÁNDOSE A, LA ADQUISICIÓN DE BIENES O SERVICIOS SUSTITUTIVOS; PÉRDIDA
DE USO, DATOS O BENEFICIOS; O INTERRUPCIÓN DEL NEGOCIO) DE CUALQUIER
MANERA CAUSADA Y EN CUALQUIER TEORÍA DE RESPONSABILIDAD, YA SEA EN
CONTRATO, RESPONSABILIDAD ESTRICTA O DELITO (INCLUYENDO NEGLIGENCIA O
DE OTRA MANERA) QUE SURJA DE CUALQUIER MANERA DEL USO DE ESTE
SOFTWARE, INCLUSO SI SE HA ADVERTIDO DE LA POSIBILIDAD DE TALES DAÑOS.
GitHub
Puedes encontrar consejos de configuración adicionales y documentación para este módulo en el repositorio de GitHub para nginx-module-substitutions.