substitutions: Module de substitutions de chaînes pour nginx
Installation
Vous pouvez installer ce module dans toute distribution basée sur RHEL, y compris, mais sans s'y limiter :
- RedHat Enterprise Linux 7, 8, 9 et 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 et 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
Activez le module en ajoutant ce qui suit en haut de /etc/nginx/nginx.conf :
load_module modules/ngx_http_subs_filter_module.so;
Ce document décrit nginx-module-substitutions v0.6.6 publié le 30 décembre 2021.
nginx_substitutions_filter Remarque : ce module n'est pas distribué avec la source de Nginx. Les instructions d'installation se trouvent ci-dessous.
Description nginx_substitutions_filter est un module de filtre qui peut effectuer à la fois des substitutions de chaînes fixes et des expressions régulières sur les corps de réponse. Ce module est assez différent du module de substitution natif de Nginx. Il analyse le tampon de chaînes de sortie et correspond aux chaînes ligne par ligne, tout comme le mod_substitute d'Apache (http://httpd.apache.org/docs/trunk/mod/mod_substitute.html).
Exemple 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;
}
Directives * subs_filter_types
* subs_filter
subs_filter_types syntaxe : *subs_filter_types mime-type [mime-types] *
par défaut : *subs_filter_types text/html*
contexte : *http, serveur, location*
*subs_filter_types* est utilisé pour spécifier quels types de contenu doivent être vérifiés pour *subs_filter*, en plus de *text/html*. La valeur par défaut est seulement *text/html*.
Ce module fonctionne uniquement avec du texte brut. Si la réponse est compressée, il ne peut pas décompresser la réponse et ignorera cette réponse. Ce module peut être compatible avec le module de filtre gzip. Mais il ne fonctionnera pas avec une réponse compressée par un proxy. Vous pouvez désactiver la réponse compressée de cette manière :
proxy_set_header Accept-Encoding "";
subs_filter syntaxe : *subs_filter source_str destination_str [gior] *
par défaut : *aucun*
contexte : *http, serveur, location*
*subs_filter* permet de remplacer la chaîne source (expression régulière ou fixe) dans la réponse nginx par la chaîne de destination. Les variables dans le texte correspondant ne sont disponibles qu'en mode chaîne fixe, ce qui signifie que le texte correspondant ne peut pas contenir de variables s'il s'agit d'une expression régulière. Le texte de substitution peut contenir des variables. Plus d'une règle de substitution par emplacement est supportée.
La signification des trois indicateurs est :
* *g* (par défaut) : Remplacer toutes les chaînes correspondantes.
* *i* : Effectuer une correspondance sans tenir compte de la casse.
* *o* : Remplacer uniquement le premier.
* *r* : Le motif est traité comme une expression régulière, la valeur par défaut est une chaîne fixe.
subs_filter_bypass syntaxe : subs_filter_bypass $variable1 ...
par défaut : *aucun*
contexte : *http, serveur, location*
Vous pouvez spécifier plusieurs variables avec cette directive. Si au moins une des variables n'est pas vide et n'est pas égale à '0', ce filtre de substitution sera désactivé.
Installation Pour installer, obtenez la source avec subversion :
git clone
git://github.com/yaoweibin/ngx_http_substitutions_filter_module.git
puis compilez nginx avec l'option suivante :
./configure --add-module=/path/to/module
Problème connu * Impossible de substituer l'en-tête de réponse.
CHANGEMENTS Changements avec nginx_substitutions_filter 0.6.4 2014-02-15
* Maintenant, les réponses non-200 fonctionneront
* ajout de la directive subs_filter_bypass
Changements avec nginx_substitutions_filter 0.6.2 2012-08-26
* correction d'un bug de chevauchement de tampon
* correction d'un bug avec le dernier tampon zéro
Changements avec nginx_substitutions_filter 0.6.0 2012-06-30
* refactorisation de ce module
Changements avec nginx_substitutions_filter 0.5.2 2010-08-11
* optimisation de ce module
* correction d'un bug de chevauchement de tampon
* correction d'un bug de segmentation lorsque la chaîne de sortie retourne NGX_AGAIN.
* correction d'un bug concernant le dernier tampon sans saut de ligne. Cela peut provoquer une erreur de segmentation. Merci à Josef Fröhle
Changements avec nginx_substitutions_filter 0.5 2010-04-15
* refactorisation de la structure source, création de branches de développement
* correction d'un bug de petits morceaux de tampons causant une perte de contenu
* correction du bug de last_buf et de la compatibilité de nginx au-dessus de 0.8.25
* correction d'un bug avec une erreur de configuration de capture indésirable dans la substitution de chaînes fixes
* ajout de la fonctionnalité de captures regex
Changements avec nginx_substitutions_filter 0.4 2009-12-23
* correction de nombreux bugs
Changements avec nginx_substitutions_filter 0.3 2009-02-04
* Première version publique
Rapport de bug Les questions/patches peuvent être adressées à Weibin Yao, yaoweibin@gmail.com.
Copyright & Licence Ce module est sous licence BSD.
Copyright (C) 2014 par Weibin Yao <[email protected]>.
Tous droits réservés.
La redistribution et l'utilisation sous forme source et binaire, avec ou sans
modification, sont autorisées à condition que les conditions suivantes soient
remplies :
*
Les redistributions du code source doivent conserver le copyright ci-dessus
avis, cette liste de conditions et le disclaimer suivant.
*
Les redistributions sous forme binaire doivent reproduire le copyright ci-dessus
avis, cette liste de conditions et le disclaimer suivant dans la
documentation et/ou d'autres matériaux fournis avec la distribution.
CE LOGICIEL EST FOURNI PAR LES DÉTENTEURS DE DROITS D'AUTEUR ET LES CONTRIBUTEURS "EN L'ÉTAT" ET TOUTES GARANTIES EXPRESSES OU IMPLICITES, Y COMPRIS, MAIS SANS S'Y LIMITER, LES GARANTIES IMPLICITES DE COMMERCIALISATION ET D'ADÉQUATION À UN
OBJECTIF PARTICULIER SONT DÉCLARÉES. EN AUCUN CAS, LE DÉTENTEUR DU DROIT D'AUTEUR OU LES CONTRIBUTEURS NE SAURAIENT ÊTRE TENUS RESPONSABLES DE TOUT DOMMAGE DIRECT, INDIRECT, ACCESSOIRE,
SPÉCIAL, EXEMPLAIRE OU CONSÉCUTIF (Y COMPRIS, MAIS SANS S'Y LIMITER, L'ACQUISITION DE BIENS OU DE SERVICES DE SUBSTITUTION ; PERTE D'UTILISATION, DE DONNÉES OU DE PROFITS ; OU INTERRUPTION D'ACTIVITÉ) QUEL QU'EN SOIT LE CAUSE ET SUR TOUTE THÉORIE DE
RESPONSABILITÉ, QUE CE SOIT EN VERTU D'UN CONTRAT, D'UNE RESPONSABILITÉ STRICTE OU DÉLICTUELLE (Y COMPRIS LA NÉGLIGENCE OU AUTRE) DÉCOULANT DE QUELQUE MANIÈRE QUE CE SOIT DE L'UTILISATION DE CE LOGICIEL, MÊME SI AVISÉ DE LA POSSIBILITÉ D'UN TEL DOMMAGE.
GitHub
Vous pouvez trouver des conseils de configuration supplémentaires et de la documentation pour ce module dans le dépôt GitHub pour nginx-module-substitutions.