Heim  >  Artikel  >  Backend-Entwicklung  >  Nginx verwendet das „replace-filter-nginx-module“ zum Implementieren der Inhaltsersetzung

Nginx verwendet das „replace-filter-nginx-module“ zum Implementieren der Inhaltsersetzung

不言
不言Original
2018-03-30 13:40:192609Durchsuche

Was dieser Artikel mit Ihnen teilt, ist, dass Nginx das Ersetzungsfilter-Nginx-Modul verwendet, um das Ersetzen von Inhalten zu implementieren. Es ist sehr detailliert. Freunde in Not können darauf verweisen.

Manchmal möchten wir antworten (z als PHP-Schnittstelle) Der zurückgegebene Inhalt wird in eine Zeichenfolge umgewandelt. Sie können zwar Methoden verwenden, die sich auf den Code jeder Sprache beziehen (z. B. str_replace von PHP), um ihn zu ersetzen, ist es jedoch bequemer, ihn auf Nginx-Ebene zu ersetzen, ohne den Code zu ändern .

Konvention: Das Quellcodeverzeichnis dieses Artikels befindet sich in: /root/soft/src.

Installation

Um dieses Modul zu installieren, müssen Sie zuerst die sregex-Laufzeitbibliothek installieren:

$ git clone https://github.com/agentzh/sregex
$ cd sregex
$ make
$ make install

und dann das replace-filter-nginx-module-Modul installieren:

$ cd /root/soft/src
$ git clone https://github.com/agentzh/replace-filter-nginx-module
$ wget http://nginx.org/download/nginx-1.12.2.tar.gz
$ tar zxvf nginx-1.12.2.tar.gz

Das Modul wird hier mithilfe einer statischen Kompilierung installiert, die eine Neukompilierung erfordertnginx. nginx letzte Kompilierungsparameter abrufen:

$ nginx -V
nginx version: nginx/1.12.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module --with-ld-opt=-ljemalloc --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module

Modul replace-filter-nginx-module hier hinzufügen:

--add-module=/root/soft/src/replace-filter-nginx-module

Letzter Kompilierungsbefehl:

cd nginx-1.12.2

$  ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module --with-ld-opt=-ljemalloc --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --add-module=/root/soft/src/replace-filter-nginx-module
 
$ make

Seit Dies ist ein Upgrade von Nginx. Achten Sie darauf, dass es nicht make install ist, da es sonst wirklich überschrieben wird. Als nächstes ersetzen Sie die Binärdatei manuell:

$ cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
$ cp -rfp ./objs/nginx /usr/local/nginx/sbin/

Testen Sie, ob es funktioniert:

$ nginx -v
nginx version: nginx/1.12.2

Ob die Konfiguration normal ist:

$ /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

Konfiguration

Der Test hier ist: Ersetzen Sie das von der Schnittstelle zurückgegebene img.test.com durch media.test.com.

Ändern: /usr/local/nginx/conf/vhost/test.com.conf

location ~ [^/]\.php(/|$)
{
    # comment try_files $uri =404; to enable pathinfo
    try_files $uri =404;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi.conf;
}

zu:

location ~ [^/]\.php(/|$)
{
    replace_filter 'img.test.com' 'media.test.com' g;
    replace_filter_types application/json;
    
    # comment try_files $uri =404; to enable pathinfo
    try_files $uri =404;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi.conf;

Beachten Sie, dass replace_filter_types hinzugefügt werden muss.

Überprüfen Sie nach dem Speichern, ob die Konfiguration in Ordnung ist:

$ /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

Dann Hot-Neustart:

# 升级完成第一次需要重启
$ service nginx restart 
 
# 热重启
$ /usr/local/nginx/sbin/nginx -s reload

Referenz

1 Das Zusatzmodul ist installiert
http://coolnull.com/4245.html
2. LNMP nginx reibungslos aktualisieren und ngx_lua-Modul-Tutorial installieren
http://www. mamicode.com/ info-...
3. openresty/replace-filter-nginx-module: Streaming regulärer Ausdrücke in Antwortkörpern
https://github.com/openresty/ ...
Ein leistungsfähigeres Ersatzmodul als ngx_http_substitutions_filter_module, das replace-filter-nginx-module von sregex
https://www.cnblogs.com/archo...

Ursprünglich veröffentlicht in: http://www.cnblogs.com/52fhy/...

Verwandte Empfehlungen:

Wie um hochgeladene Dateien in der Nginx-Größe zu ändern

Nginx-Konfiguration PHP-Instanz

Curl-Zugriff lokales Timeout in PHP + Nginx-Umgebung


Das obige ist der detaillierte Inhalt vonNginx verwendet das „replace-filter-nginx-module“ zum Implementieren der Inhaltsersetzung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn