Pular para conteúdo

substituições: Módulo de substituições de string para nginx

Instalação

Você pode instalar este módulo em qualquer distribuição baseada em RHEL, incluindo, mas não se limitando a:

  • RedHat Enterprise Linux 7, 8, 9 e 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 e 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

Ative o módulo adicionando o seguinte no topo de /etc/nginx/nginx.conf:

load_module modules/ngx_http_subs_filter_module.so;

Este documento descreve o nginx-module-substitutions v0.6.6 lançado em 30 de dezembro de 2021.


nginx_substitutions_filter Nota: este módulo não é distribuído com o código-fonte do Nginx. As instruções de instalação podem ser encontradas abaixo.

Descrição nginx_substitutions_filter é um módulo de filtro que pode realizar substituições de expressões regulares e de strings fixas nos corpos das respostas. Este módulo é bastante diferente do Módulo de Substituição nativo do Nginx. Ele escaneia o buffer da cadeia de saída e combina strings linha por linha, assim como o mod_substitute do Apache (http://httpd.apache.org/docs/trunk/mod/mod_substitute.html).

Exemplo 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;
}

Diretrizes * subs_filter_types

*   subs_filter

subs_filter_types sintaxe: *subs_filter_types mime-type [mime-types] *

padrão: *subs_filter_types text/html*

contexto: *http, server, location*

*subs_filter_types* é usado para especificar quais tipos de conteúdo devem ser verificados para *subs_filter*, além de *text/html*. O padrão é apenas *text/html*.

Este módulo funciona apenas com texto simples. Se a resposta estiver comprimida, ele não poderá descomprimir a resposta e ignorará essa resposta. Este módulo pode ser compatível com o módulo de filtro gzip. Mas não funcionará com a resposta comprimida de proxy. Você pode desabilitar a resposta comprimida assim:

proxy_set_header Accept-Encoding "";

subs_filter sintaxe: *subs_filter source_str destination_str [gior] *

padrão: *nenhum*

contexto: *http, server, location*

*subs_filter* permite substituir a string de origem (expressão regular ou fixa) na resposta do nginx pela string de destino. As variáveis no texto correspondente estão disponíveis apenas no modo de string fixa, o que significa que o texto correspondente não pode conter variáveis se for uma expressão regular. O texto de substituição pode conter variáveis. Mais de uma regra de substituição por localização é suportada. O significado das três flags é:

*   *g* (padrão): Substitui todas as strings correspondentes.

*   *i*: Realiza uma correspondência sem diferenciar maiúsculas de minúsculas.

*   *o*: Substitui apenas a primeira.

*   *r*: O padrão é tratado como uma expressão regular, o padrão é string fixa.

subs_filter_bypass sintaxe: subs_filter_bypass $variable1 ...

padrão: *nenhum*

contexto: *http, server, location*

Você pode especificar várias variáveis com esta diretiva. Se pelo menos uma das variáveis não estiver vazia e não for igual a '0', este filtro de substituição será desativado.

Instalação Para instalar, obtenha o código-fonte com subversion:

git clone
git://github.com/yaoweibin/ngx_http_substitutions_filter_module.git

e então compile o nginx com a seguinte opção:

./configure --add-module=/path/to/module

Problema conhecido * Não é possível substituir o cabeçalho da resposta.

ALTERAÇÕES Alterações com nginx_substitutions_filter 0.6.4 2014-02-15

*   Agora a resposta não-200 funcionará

*   adicionada a diretiva subs_filter_bypass

Alterações com nginx_substitutions_filter 0.6.2 2012-08-26

*   corrigido um bug de sobreposição de buffer

*   corrigido um bug com o último buffer zero

Alterações com nginx_substitutions_filter 0.6.0 2012-06-30

*   refatorado este módulo

Alterações com nginx_substitutions_filter 0.5.2 2010-08-11

*   muitas otimizações para este módulo

*   corrigido um bug de sobreposição de buffer

*   corrigido um bug de falha de segmento quando a cadeia de saída retorna NGX_AGAIN.

*   corrigido um bug sobre o último buffer sem quebra de linha. Isso pode causar falha de segmento. Agradecimentos a Josef Fröhle

Alterações com nginx_substitutions_filter 0.5 2010-04-15

*   refatorada a estrutura de origem, criado ramos de dev

*   corrigido um bug de pequenos pedaços de buffers causando perda de conteúdo

*   corrigido o bug de last_buf e a compatibilidade do nginx acima de 0.8.25

*   corrigido um bug com erro de configuração de captura indesejada na substituição de string fixa

*   adicionada a funcionalidade de capturas regex

Alterações com nginx_substitutions_filter 0.4 2009-12-23

*   corrigidos muitos bugs

Alterações com nginx_substitutions_filter 0.3 2009-02-04

*   Lançamento público inicial

Relatando um bug Perguntas/patches podem ser direcionados a Weibin Yao, yaoweibin@gmail.com.

Direitos autorais & Licença Este módulo está licenciado sob a licença BSD.

Copyright (C) 2014 por Weibin Yao <[email protected]>.

Todos os direitos reservados.

Redistribuição e uso em formas de código-fonte e binário, com ou sem modificação, são permitidos desde que as seguintes condições sejam atendidas:

*
      Redistribuições do código-fonte devem reter o aviso de copyright acima, esta lista de condições e o seguinte aviso.

*
      Redistribuições em forma binária devem reproduzir o aviso de copyright acima, esta lista de condições e o seguinte aviso na documentação e/ou outros materiais fornecidos com a distribuição.

ESTE SOFTWARE É FORNECIDO PELOS DETENTORES DOS DIREITOS AUTORAIS E CONTRIBUIDORES "COMO ESTÁ" E QUAISQUER GARANTIAS EXPRESSAS OU IMPLÍCITAS, INCLUINDO, MAS NÃO SE LIMITANDO A, GARANTIAS IMPLÍCITAS DE COMERCIALIZAÇÃO E ADEQUAÇÃO A UM DETERMINADO PROPÓSITO SÃO ISENTAS. EM NENHUMA CIRCUNSTÂNCIA OS DETENTORES DOS DIREITOS AUTORAIS OU CONTRIBUIDORES SERÃO RESPONSÁVEIS POR QUAISQUER DANOS DIRETOS, INDIRETOS, INCIDENTAIS, ESPECIAIS, EXEMPLARES OU CONSEQUENCIAIS (INCLUINDO, MAS NÃO SE LIMITANDO A, AQUISIÇÃO DE BENS OU SERVIÇOS SUBSTITUTIVOS; PERDA DE USO, DADOS OU LUCROS; OU INTERRUPÇÃO DE NEGÓCIOS) DE QUALQUER FORMA CAUSADA E EM QUALQUER TEORIA DE RESPONSABILIDADE, SEJA EM CONTRATO, RESPONSABILIDADE ESTRITA OU DELITO (INCLUINDO NEGLIGÊNCIA OU OUTRA) QUE SURJA DE QUALQUER FORMA DO USO DESTE SOFTWARE, MESMO SE AVISADO DA POSSIBILIDADE DE TAIS DANOS.

GitHub

Você pode encontrar dicas adicionais de configuração e documentação para este módulo no repositório do GitHub para nginx-module-substitutions.