Nginx内容替换模块http

  • 时间:
  • 浏览:59
  • 来源:小飞娱乐网_提供小欧娱乐网技术_小K娱乐网资讯

说到Nginx的内容替换功能,大主次人应该都听说过Nginx内置的的subs_filter替换模块,否则你你你这些模块有个缺憾,好多好多 我能够否替换一次,否则还不支持正则表达式,这时要些鸡肋了。

不过,亲戚亲戚朋友时要集成有有另一个第三方的替换模块:ngx_http_substitutions_filter_module,来实现亲戚亲戚朋友的各种需求。

经过测试,你你你这些模块共要有如下实用功能:

①、支持多次替换

②、支持正则替换

③、支持中文替换

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

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

一、编译集成

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

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

[[email protected] ~]# wget -O ngx_http_substitutions_filter_module-master.zip https://github.com/yaoweibin/ngx_http_substitutions_filter_module/archive/master.zip
[[email protected] ~]# unzip ngx_http_substitutions_filter_module-master.zip
[[email protected] ~]# cd ngx_http_substitutions_filter_module-master && pwd 
/root/ngx_http_substitutions_filter_module-master

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

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

[[email protected] ~]# /usr/local/nginx/sbin/nginx  -V
Tengine version: Tengine/2.1.2 (nginx/1.6.2)
built by gcc 4.8.5 2060

623 (Red Hat 4.8.5-4) (GCC) 
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --add-module=../ngx_cache_purge-2.3 --with-http_sub_module

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

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

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

相似:

./configure --prefix=/usr/local/nginx --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --add-module=../ngx_cache_purge-2.3 --with-http_sub_module --add-module=/root/ngx_http_substitutions_filter_module-master/

再往后,则是make以及平滑升级,请参考有有另另一个的文章完成:

Nginx在线服务情況下平滑升级或新增模块的删改操作记录

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

二、使用说明

模块的github主页虽然 肯能有了很删改的说明了,这里就简单的做下搬运工。

使用示例:

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;
}

从github给出的使用示例来看,你你你这些模块涉及有有另一个指令:

* 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配置内即可完成替换

location / { # 新增如下代码
    subs_filter http:// https:// gr; #将页面中的http链接删改替换为https

②、CDN域名替换

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

location / { # 新增如下代码,将静态文件域名替加在七牛
    subs_filter https://zhang.ge/([^"\']*?)\.(jpg|png|js|css|jpeg|bmp) https://example.qiniudn.com/$1.$2 igr;

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

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

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

前段时间,就看有博客在说 WordPress 会在前台暴露管理员登陆账户的问题,否则给出了较为复杂化的除理法律法律法律依据:通过修改 WordPress 内核函数来隐藏账户名。

修改内核函数,一般是非常无奈,能够否 你你这些除理法律法律法律依据的有有另另一个才会用到,好多好多 ,我就看你你你这些问题第一件时间想到的法律法律法律依据好多好多 我替换。

使用PHP替换是非常简单的,参考博客有有另另一个分享的文章即可读懂:

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

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

location / {
    # 替换管理员登录名 admin 为 null
    subs_filter  'author-admin' 'author-null';

你你这些登录名,请自行参考,若有多个登录名时要另起多行或使用正则表达式均可。

鉴于篇幅有限,就分享这有有另一个实用技巧吧,你你这些就靠另一方发掘了,比如镜像网站做内容替换那先 的….