Saltar a contenido

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.