Loading
0

Nginx下sub_filter模块关键字替换方法

技术小学生微信公众号
腾讯云服务器大促销。
华为服务器
Nginx自带的sub_filter模块可以将自定的关键字替换为指定的字符比如将a字符替换为b字符,一般用户不方便修改网站内容或者修改制定关键字等,比如将某违法关键字修改为*或者修改为其他内容,方法如下
1、查看Nginx是否有安装sub_filter组件:
执行命令:

nginx -V

显示如下:

[root@blog_tag_gg ~]# nginx -V
nginx version: nginx/1.17.8
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
built with OpenSSL 1.1.1d  10 Sep 2019
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/www/server/nginx --add-module=srclib/ngx_devel_kit --add-module=srclib/lua_nginx_module --add-module=srclib/ngx_cache_purge --add-module=srclib/nginx-sticky-module --with-openssl=srclib/openssl111 --with-pcre=srclib/pcre-8.43 --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-http_dav_module --add-module=srclib/nginx-dav-ext-module

组件在nginx的名称为:“http_sub_module”则表示有安装组件。

  location / {
        root   /opt/app/code/;
        random_index on;
        index  index.html index.htm;
        sub_filter 'blog_tag_gg' 'blog.tag.gg';  #第一个参数blog_tag_gg替换为:blog.tag.gg
        sub_filter_once off;   #off:替换所有的,on:只替换第一个
     }

比如添加到宝塔站点中

server
{
    listen 80;
      listen 443 ssl http2;
    server_name ip.tag.gg 1.1.1.1;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/blog.tag.gg;
    sub_filter 'blog_tag_gg' 'blog.tag.gg';  #第一个参数是要被替换的,第二个参数是替换后的
    sub_filter_once on;   #替换所有的,默认是on,替换第一个

}

改完保存下,使用命令检查nginx语法是否正确(路径更换为自己的路径)
nginx -t c /etc/nginx/nginx.conf
平滑重启nginx
nginx -s reload -c /etc/nginx/nginx.conf
测试文件内容如下:

我的网站是:blog_tag_gg
<br>
我的网站是:blog_tag_ggaaa

访问后替换的页面如下:(规则设置的是on,所以只替换了第一个字符

我的网站是:blog.tag.gg
我的网站是:blog_tag_ggaaa

其他范例:

location / {
    sub_filter '<a href="http://127.0.0.1:8080/'  '<a href="https://$host/';
    sub_filter '<img src="http://127.0.0.1:8080/' '<img src="https://$host/';
    sub_filter_once on;
}

指令说明:
  •     sub_filter指令,用于替换字符串,不区分字符串的大小写
  •     使用语法:sub_filter 要替换的字符串 替换后的字符串
  •     sub_filter_last_modified指令,允许在替换期间保留来自原始响应的“Last-Modified”标题字段以促进响应缓存。默认情况下,在处理期间修改响应的内容时,标题字段被删除。
  •     使用语法:sub_filter_last_modified on | off,默认on
  •     sub_filter_once指令,指示是否查找每个字符串以替换一次或重复替换。
  •     使用语法:sub_filter_once on | off,默认on
  •     sub_filter_types指令,指定MIME类型的字符串替换,除了“ text/html” 之外,还可以在指定MIME类型的响应中启用字符串替换。特殊值“ *”匹配任何MIME类型。
  •     使用语法:sub_filter_types mime-type …,默认sub_filter_types text / html;


 
技术小学生微信公众号
华为服务器
腾讯云服务器大促销。

声明:站长码字很辛苦啊,转载时请保留本声明及附带文章链接:https://blog.tag.gg/showinfo-7-35792-0.html
亲爱的:若该文章解决了您的问题,可否收藏+评论+分享呢?
上一篇:Nginx伪静态(重定向)nginx跳转实例大全
下一篇:Centos查看nginx并发连接数和TCP连接状态命令