nginx sub模块替换文本
nginx的ngx_http_sub_module模块,可以用于修改网站响应内容中的字符串,如过滤敏感词。第三方模块ngx_http_substitutions_filter_module,弥补了ngx_http_sub_module的不足,可以采用正则表达式替换。
part 1、安装ngx_http_sub_module
nginx默认是不安装ngx_http_sub_module模块的,直接应用sub_filter指令将报错
nginx: [emerg] unknown directive "sub_filter" in /nginx-test/conf/nginx.conf:
因此需要在编译过程中添加 --with-http_sub_module 参数
# 编译
./configure --prefix=/nginx-sub --with-http_sub_module
# 安装
make install
part 2、sub模块替换文本
官网文档说明,ngx_http_sub_module包括四个命令:
sub_filter string
replacement
; 将字符串string修改成replacement,不区分大小写,传入文本是上一次处理后的文本
sub_filter_last_modified on
| off
; default: off 是否阻止response header中写入Last-Modified,防止缓存,默认是off,即防止缓存
sub_filter_once on
| off
; default: on sub_filter指令是执行一次,还是重复执行,默认是只执行一次
sub_filter_types mime-type
...; default: text/html 指定类型的MINE TYPE才有效
下面以替换路飞为例:
sub.html原始文本为:
1)修改一次
location /sub {
sub_filter 'luffy' '路飞';
}
发现不区分大小写的把Luffy替换为了路飞,而第三行的luffy不变
2)重复执行修改
location /sub {
sub_filter 'luffy' '路飞';
sub_filter_once off;
}
这次把Luffy和luffy都替换成路飞了
备注:开放80端口命令
# 开启端口
# --zone #作用域
# --add-port=/tcp #添加端口,格式为:端口/通讯协议
# --permanent #永久生效,没有此参数重启后失效
firewall-cmd --zone=public --add-port=/tcp --permanent
# 重启防火墙
firewall-cmd --reload
part 3、subs_filter多个替换
ngx_http_substitutions_filter_module是一个第三方模块,它可以多次替换或者正则替换网站响应内容,需要通过--add-module参数编译添加
首先需要下载,地址是:https://github.com/yaoweibin/ngx_http_substitutions_filter_module
下载之后,我放在了与nginx源码平级的目录下
# 编译
./configure --prefix=/nginx-sub --with-http_sub_module --add-module=../ngx_http_substitutions_filter_module-master
# 安装
make install
subs_filter source_str destination_str [gior] default:g 默认是全局匹配,大小写敏感
使用subs_filter指令
location /sub {
subs_filter 'luffy' '路飞';
}
location /sub {
subs_filter 'luffy' '路飞' i;
}
使用正则表达式:
location /sub {
subs_filter luffy|鲁夫 路飞 ir;
}
nginx sub模块替换文本的更多相关文章
- (转)nginx 常用模块整理
原文:http://blog.51cto.com/arm2012/1977090 1. 性能相关配置 worker_processes number | auto: worker进程的数量:通常应该为 ...
- nginx基础模块
http://www.nginx.cn/doc/ 基础模块 HTTP Core模块* HTTP Upstream 模块 HTTP Access 模块 HTTP Auth Basic 模块 HTTP A ...
- nginx添加模块 (非覆盖安装)
nginx添加模块(非覆盖安装) 原已经安装好的nginx,现在需要添加一个未被编译安装的模块: 查看原来编译时都带了哪些参数# /usr/local/nginx/sbin/nginx -V ngin ...
- [转帖]Nginx rewrite模块深入浅出详解
Nginx rewrite模块深入浅出详解 https://www.cnblogs.com/beyang/p/7832460.html rewrite模块(ngx_http_rewrite_modul ...
- Nginx详解七:Nginx基础篇之Nginx官方模块
Nginx官方模块 --with-http_stub_status_module:Nginx的客户端状态,用于监控连接的信息,配置语法如下:配置语法:stub_status;默认状态:-配置方法:se ...
- nginx第三方模块安装方法
nginx第三方模块安装方法 ./configure --prefix=/你的安装目录 --add-module=/第三方模块目录 比如echo模块. 没安装前,使用测试. location /tes ...
- Nginx RTMP 模块 nginx-rtmp-module 指令详解
译序:截至 Jul 8th,2013 官方公布的最新 Nginx RTMP 模块 nginx-rtmp-module 指令详解.指令Corertmp语法:rtmp { ... }上下文:根描述:保存所 ...
- nginx常用模块(三)
Nginx常用模块(三) ngx_http_proxy_module模块配置(http或https协议代理) proxy_pass URL; 应用上下文:location, if in locatio ...
- Nginx 常用模块
Nginx 常用模块 1. ngx_http_autoindex_module # ngx_http_autoindex_module模块处理以斜杠字符(' / ')结尾的请求,并生成一个目录列表. ...
随机推荐
- 常见的java设计模式
单例模式 简单点说,就是一个应用程序中,某个类的实例对象只有一个,你没有办法去new,因为构造器是被private修饰的,一般通过getInstance()的方法来获取它们的实例. getInstan ...
- leetcode-数组-子集
一.题目描述 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: nums = [1,2,3] 输出: [ [3], [1], ...
- SDL 开发实战(四): SDL 事件处理
在前面学习SDL的例子运行时,我们发现我们的窗口只停留了几秒,但是如果设置更长时间显然也有其他的弊端. 那么有没有一种好的办法可以解决这个问题呢?例如:能不能让窗口一直显示,直到检测到用户用鼠标点击关 ...
- [Swift]LeetCode22. 括号生成 | Generate Parentheses
Given n pairs of parentheses, write a function to generate all combinations of well-formed parenthes ...
- Npoi简单读写Excel
什么是NPOI ? 简而言之,NPOI就是可以在没有Office的情况下对Word或Excel文档进行读写等操作. 使用方式 : 1.准备NPOI的dll文件 下载链接:https://npoi.co ...
- 记录eclipse安装SpringBoot插件及搭建SpringBoot项目
刚学习了下SpringBoot 插件安装 创建项目在此记录下 在spring官网上下载相关的插件,然后导入到eclipse中,以下是下载步骤: 1.首先查看自己eclipse版本号 help--> ...
- [Abp 源码分析]十六、后台作业与后台工作者
0. 简介 在某些时候我们可能会需要执行后台任务,或者是执行一些周期性的任务.比如说可能每隔 1 个小时要清除某个临时文件夹内的数据,可能用户会要针对某一个用户群来群发一组短信.前面这些就是典型的应用 ...
- 【安卓本卓】Android系统源码篇之(一)源码获取、源码目录结构及源码阅读工具简介
前言 古人常说,“熟读唐诗三百首,不会作诗也会吟”,说明了大量阅读诗歌名篇对学习作诗有非常大的帮助.做开发也一样,Android源码是全世界最优秀的Android工程师编写的代码,也是A ...
- Grapher--寂寞无名的神器
承自上一篇中的函数图形,有人问,能不能别把画个图搞那么复杂,我说当然,只要你有一台mac. 话说出来很潇洒的样子,充斥着一股迷之自信. 可能这就是mac用户典型的特征,尽管也许并没有那么值得骄傲. 其 ...
- Spring Boot 项目配置的使用方法
第一种写法resources目录下的application.properties文件 第二种写法resources目录下的application.yml文件 在项目中获取配置项: 分组配置: (配置 ...