F5社区-F5技术交流中心

博文精选 | 漫画 Nginx 的 subfilter

2022-05-27 13:57:18

F5小安

PHPWord

文章速览:

 

行业:互联网

 

关键字:Nginx、subfilter、SSL、HTTPS

 

摘要:大周五的,马上就要下班了,接到一个需求,一个老网站,需要加 SSL 证书,改成全站 HTTPS,没多想,不就是加个证书么

 

阅读时长:3分钟

 

 

以下文章来源于InfoQ!作者:运维研习社

 

 

大周五的,马上就要下班了,接到一个需求,一个老网站,需要加 SSL 证书,改成全站 HTTPS,没多想,不就是加个证书么


certbot 脚本一跑,证书自动配好



certbot 自动添加证书,并自动配置强制跳转到 HTTPS,访问测试


网站样式全乱,打开开发者工具



原来是资源都是 http 的,被浏览器 blocked,无法加载,查看代码,发现资源都是直接写死 http 协议的,内容很多,前端文件还都是压缩过的,这要手动改肯定是不可能的


突然想到 Nginx 的 subfilter 模块,subfilter 可以查询并修改 response 内容,所以可以将响应内容中的 http 替换为 https


nginx 的 sub 模块很简单,就 4 个指令,分别是

  • sub_filter

  • sub_filter_last_modified

  • sub_filter_once

  • sub_filter_types


sub_filter,就是替换指令,有两个参数,第一个是原字符串,第二个是目标字符串

sub_filter_last_modified 指令,是允许再替换期间,保留原始响应头中的 Last-Modified 字段,用来响应缓存,默认情况下是关闭的,就是在修改响应内容的时候,会删除标头字段

sub_flter_once 指令,是指定替换一次还是替换所有匹配到的字符串,默认是 on,替换第一次匹配到的,注意是第一次,不是第一个

sub_filter_types 指令,是可以根据 MIME 类型来指定替换指定类型的文件内容,而不是替换所有



通过这样的方式所有内容就会都变成 https 的请求,Nginx 配置很简单



subfilter 类型是文档类型,替换是将 http://替换为 https://,然后配置只替换一次,否则会一直处理替换操作


这要再次访问网站的时候,就可以正常访问,除了这种方式,其实在 linux 下,也可以通过 sed 命令遍历完全替换目录下所有文件中的 http,但是还是推荐用 Nginx 模块的方式,可以不去改动代码

 

 

以上是针对subfilter的分享,希望对大家有帮助!

 

 

 

阅读原文

 

声明:本文章版权归原作者及原出处所有 。凡本社区注明“来源:XXX或转自:XXX”的作品均转载自其它媒体,转载目的在于传递分享更多知识,内容为作者个人观点,仅供参考,并不代表本社区赞同其观点和对其真实性负责。本社区转载的文章,我们已经尽可能的对作者和来源进行了注明,若因故疏忽,造成漏注,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本社区拥有对此声明的最终解释权。

发布评论 加入社群

发布评论

相关文章

博文精选 | nginx 性能优化 -- 配置解析

F5小安

2022-07-21 10:35:06 512

博文精选 | 一篇文章搞定 Nginx 反向代理与负载均衡

F5小安

2022-05-26 10:31:14 917

博文精选 | 负载均衡方式

F5小安

2022-05-25 09:52:55 451

Login

手机号
验证码
© 2019 F5 Networks, Inc. 版权所有。京ICP备16013763号-1