Hello!
2013/7/21 Water Duan:
> nginx作为代理服务器,需要将源站返回内容中“folderlist=×××,×××”中的×××,修改为ngx服务器某一目录下文件夹名,多个文件夹名用,分隔。
>
有多种不同的实现方式可供选择:
1. 可以使用 body_filter_by_lua
指令来实现:
http://wiki.nginx.org/HttpLuaModule#body_filter_by_lua 这个支持流式处理。
2. 可以使用 ngx.location.capture 发起子请求,然后对子请求的响应体进行全缓冲式修改。
3. 可以使用 ngx_replace_filter
模块来进行流式正则替换:
https://github.com/agentzh/replace-filter-nginx-module
替换成的目标值可以通过 ngx_lua 模块嵌入一小段 Lua 代码来事先计算好,放置在你自己定义的 nginx 变量中,然后在
replace_filter 指令中直接引用之。比如
set_by_lua $my_var '... return ...';
replace_filter 'folderlist=\w+' 'folderlist=$my_var' 'g';
另外,建议在向此邮件列表发贴前先加入列表,否则你的贴子公开发表前总是需要人工审核。
Regards,
-agentzh