如何通过sub_filter在网关层动态调整缓存JSON资源域名解析?
- 内容介绍
- 文章标签
- 相关推荐
本文共计881个文字,预计阅读时间需要4分钟。
可以通过Nginx的sub_filter指令在反向代理响应前对客户端返回的内容(包括JSON)进行字符串替换,从而动态修正其中的域名。关键在于确保响应可被处理、替换精准且不影响JSON结构。
确保响应满足 sub_filter 处理前提
sub_filter 默认只处理 text/html 类型响应,而 JSON 通常返回 application/json。需显式启用对 JSON 的处理:
- 在 location 块中添加
sub_filter_types application/json; - 确认后端响应头未设置
Content-Encoding: gzip(压缩内容无法被 sub_filter 处理),必要时在 proxy_pass 前加proxy_set_header Accept-Encoding "";禁用压缩 - 确保响应体未被分块传输干扰(Nginx 1.9.4+ 默认支持流式 sub_filter,但建议配合
sub_filter_last_modified off;避免缓存头冲突)
精准替换 JSON 中的域名字段
JSON 是结构化文本,直接全局替换易出错(如误改字段名或数值)。
本文共计881个文字,预计阅读时间需要4分钟。
可以通过Nginx的sub_filter指令在反向代理响应前对客户端返回的内容(包括JSON)进行字符串替换,从而动态修正其中的域名。关键在于确保响应可被处理、替换精准且不影响JSON结构。
确保响应满足 sub_filter 处理前提
sub_filter 默认只处理 text/html 类型响应,而 JSON 通常返回 application/json。需显式启用对 JSON 的处理:
- 在 location 块中添加
sub_filter_types application/json; - 确认后端响应头未设置
Content-Encoding: gzip(压缩内容无法被 sub_filter 处理),必要时在 proxy_pass 前加proxy_set_header Accept-Encoding "";禁用压缩 - 确保响应体未被分块传输干扰(Nginx 1.9.4+ 默认支持流式 sub_filter,但建议配合
sub_filter_last_modified off;避免缓存头冲突)
精准替换 JSON 中的域名字段
JSON 是结构化文本,直接全局替换易出错(如误改字段名或数值)。

