Nginx内容替换模块http_substitutions_filter_module及实用案例分享

说到Nginx的内容替换功能,大部分人应该都听说过Nginx内置的的subs_filter替换模块,但是这个模块有个缺憾,就是只能替换一次,而且还不支持正则表达式,这就有些鸡肋了。Nginx内容替换模块http_substitutions_filter_module及实用案例分享

不过,我们可以集成一个第三方的替换模块:ngx_http_substitutions_filter_module,来实现我们的各种需求。

经过测试,这个模块至少有如下实用功能:

①、支持多次替换

②、支持正则替换

③、支持中文替换

Ps:略有遗憾的是,这个替换不能使用到 if 判断模块内,否则就超神了。。。

下面,简单介绍下 ngx_http_substitutions_filter_module 的安装实用以及一些实用案例。

一、编译集成

和所有Nginx非内置模块一样,添加模块需要在编译的时候指定模块源码包来集成。当然,Tengine可以使用动态模块加载的功能,这里就不细说了。

①、下载模块源码包并解压,最后列出目录位置备用

github手动下载地址:https://github.com/yaoweibin/ngx_http_substitutions_filter_module/

②、在服务器上执行 nginx -V 查看当前  Nginx 编译参数,比如:

③、加上模块参数,重新编译Nginx

找到服务器上原来安装时留下的 Nginx 源码目录(如果没有请重新下载并解压,此处不赘述),进入目录后,在第②步中的参数基础上新增集成替换模块(请注意前面需要加上  ./configure ):

./configure [+原有参数+] --add-module=/root/ngx_http_substitutions_filter_module-master/

例如:

再往后,则是make以及平滑升级,请参考之前的文章完成:

Nginx在线服务状态下平滑升级或新增模块的详细操作记录

正确完成后,Nginx就具备内容替换功能了。

二、使用说明

模块的github主页其实已经有了很详细的说明了,这里就简单的做下搬运工。

使用示例:

从github给出的使用示例来看,这个模块涉及2个指令:

* subs_filter_types

subs_filter_types 语法: subs_filter_types mime-type [mime-types]

默认: subs_filter_types text/html

适用: http, server, location

subs_filter_types 是用来指定替换文件类型的 默认仅仅替换text/html类型的文件。

 

* subs_filter

subs_filter 语法: subs_filter source_str destination_str [gior]

默认: none

适用: http,server,location

subs_filter 是用来替换文本的,可以使用正则

g(默认):替换匹配项。

i  :区分大小写的匹配

o : 只匹配发现的第一个。

r  : 正则匹配。

三、案例分享

①、全站https

有了这个功能,要实现全站https也就是非常简单了,只要把本站的http://协议代码全部替换成https即可。当然,替换时要注意匹配范围,免得把不支持https的外链也一起替换了。。。

比如,将如下代码添加到网站Nginx配置内即可完成替换

②、CDN域名替换

这个模块在CDN方面同样简单实用!比如,我们网站要用到七牛CDN,不管是纯代码还是插件,那都是靠PHP代码来进行替换的,性能肯定就不如Nginx直接替换来的简单粗暴了。

Ps:经测试,在使用正则模式时,不能使用nginx内置变量,比如:$host,否则会出现如下报错:

nginx: [emerg] match part cannot contain variable during regex mode in ***

③、解决前台暴露管理员账号风险

前段时间,看到有博客在说 WordPress 会在前台暴露管理员登陆账户的问题,然后给出了较为复杂的解决办法:通过修改 WordPress 内核函数来隐藏账户名。

修改内核函数,一般是非常无奈,没有其他解决方法的时候才会用到,所以,我看到这个问题第一件时间想到的办法就是替换。

使用PHP替换是非常简单的,参考博客之前分享的文章即可搞定:

WordPress简单代码开启七牛CDN及集成七牛缩略图的方法

而对于本文来说,PHP替换方案依然过于复杂,因为本文一行规则即可解决问题,比如将登录名admin替换为null:

其他登录名,请自行参考,若有多个登录名可以另起多行或使用正则表达式均可。

鉴于篇幅有限,就分享这三个实用技巧吧,其他就靠自己发掘了,比如镜像网站做内容替换什么的....

发表评论

gravatar

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen:

刷新评论

目前评论:28   其中:访客  26   博主  2

  1. 母婴B2B 1 来自天朝的朋友 谷歌浏览器 Windows 7 安徽省合肥市巢湖市 电信

    感谢博主的分享!

  2. 腾讯分分彩 0 来自天朝的朋友 谷歌浏览器 Windows 7 浙江省嘉兴市 电信

    感谢博主的分享!

  3. 微部落博客 4 来自天朝的朋友 谷歌浏览器 Windows 10 江苏省常州市 电信

    这个研究的有点深了,有点儿看不懂

  4. 网赚 1 来自天朝的朋友 谷歌浏览器 Windows 7 山东省聊城市 联通

    学习了

  5. 龙笑天 5 来自天朝的朋友 火狐浏览器 Windows 7 广东省深圳市 电信

    一脸蒙逼的进来 二脸蒙逼的出去…

  6. 凯哥自媒体 2 来自天朝的朋友 谷歌浏览器 Windows 7 河南省郑州市 电信

    分享的不错,谢谢

  7. 手机蛙排名软件 2 来自天朝的朋友 谷歌浏览器 Windows XP 浙江省嘉兴市 电信

    这个案例受益匪浅呀,我学到了很多东西,感谢

  8. Zziv 0 来自天朝的朋友 QQ浏览器 Windows 7 北京市 联通

    不错

  9. 柒号淘金 0 来自天朝的朋友 搜狗浏览器 Windows 7 河北省邯郸市 电信

    你们这些技术大牛,哎看不明白

  10. 任务易 2 来自天朝的朋友 搜狗浏览器 Windows 7 湖北省武汉市 电信

    好多干货都被我收藏了 :neutral:

  11. 你懂的网址 0 来自天朝的朋友 谷歌浏览器 Windows 10 湖北省武汉市 电信

    不vu哦的文章,学习一下。

  12. 乐赚168 1 来自天朝的朋友 谷歌浏览器 Windows 10 河南省南阳市 联通

    收藏了,感谢博主的分享

  13. 明月登楼的博客 5 来自天朝的朋友 谷歌浏览器 Windows 10 河南省南阳市 电信

    催更了!博主!

    • 张戈 [博主] 来自天朝的朋友 QQ浏览器 Windows 7 广东省广州市 电信

      昨天才更新的。。

  14. 明月登楼的博客 5 来自天朝的朋友 谷歌浏览器 Windows 10 河南省南阳市 电信

    汗,为啥这个输入评论的礼花特效在博主这里竟然是全屏震动呀!好牛X呀!求分享!

    • 张戈 [博主] 来自天朝的朋友 QQ浏览器 Windows 7 广东省广州市 电信

      不是你分享的代码吗。。。里面有个什么是否抖动的设置,把false改成true即可。

  15. 语录大全 0 来自天朝的朋友 谷歌浏览器 Windows 10 江苏省苏州市 电信

    这个很实用,可以增加安全系数。

  16. 杭州牛牛工作室 4 来自天朝的朋友 火狐浏览器 Windows 7 山西省运城市 联通

    值得一看

  17. 淀粉包装秤 0 来自天朝的朋友 谷歌浏览器 Windows 7 江苏省无锡市 电信

    最美的不是下雨天,而是与你一起躲过雨的屋檐

  18. 不套路网赚 1 来自天朝的朋友 谷歌浏览器 Windows 7 湖北省十堰市 铁通

    谢谢博主分享啊

  19. 杭州牛牛工作室 4 来自天朝的朋友 谷歌浏览器 Windows 7 山西省忻州市 联通

    感谢分享

  20. 杭州牛牛工作室 4 来自天朝的朋友 谷歌浏览器 Windows 7 山西省忻州市 联通

    赞一个

  21. 健康之路 1 来自天朝的朋友 谷歌浏览器 Windows 10 云南省昆明市 电信

    签到成功!签到时间:上午9:29:05 :!: 评论好牛叉呀!激动。。,每日签到,生活更精彩哦~

  22. harries 3 来自天朝的朋友 谷歌浏览器 Windows 7 北京市 联通

    曾经做过1年多的运维

  23. Win7en乐园 1 来自天朝的朋友 谷歌浏览器 Windows 10 江苏省苏州市 电信

    学习呀,蛮有用的。打个字,屏幕都了闪、 :arrow:

  24. 果趣网 0 来自天朝的朋友 Safari浏览器 iPhone iPhone OS 10_3_1 like Mac OS X) AppleWebKit 广东省佛山市 联通

    签到成功!签到时间:上午1:29:47,每日签到,生活更精彩哦~

  25. 凯尚达 2 来自天朝的朋友 谷歌浏览器 Windows 7 河南省郑州市 电信

    谢谢

  26. 宝宝计划客户端 2 Philippines 谷歌浏览器 Windows 10 菲律宾

    这个很有用

加载中,请稍候...