源站有很多静态资源下载,openresty 作为网关加了鉴权,希望能解析特定的文本文件,把鉴权参数追加到文本文件的每一行,花了半天时间没搜索到什么资料。今天有看到可以直接通过 lua 脚本直接请求源站获取 body 之后修改后返回,openresty 主题人太少了,来这边希望有大佬指导下
1
ho121 107 天前 via Android
|
2
zhangjiashu2023 107 天前
对具体 location 进行拦截,然后用 body_filter_by_lua_file 指定 lua 文件,可以对响应进行拦截,修改响应数据。但是要注意请求的时候不要开压缩,或者代理的时候加上 proxy_set_header Accept-Encoding identity; 不然你拦截到的响应体是压缩后的数据。gzip 解压比较方便,其他的 br 啥的 openresty 整了很久配置都没弄明白。所以干脆不让压缩了
|
3
kaf OP @ho121 在 body_filter_by_lua 块下会有 ngx.arg[1]和 ngx.arg[2]两个变量,ngx.arg[1]为响应正文,ngx.arg[2]表示流是否结束,是这样子吗
|
4
kaf OP @zhangjiashu2023 有约定不启用压缩,参考了下一楼的文章,就是在 body_filter_by_lua_file 脚本中处理 ngx.arg[1]变量吧
|
5
ho121 106 天前 via Android
|
7
igeeky 106 天前
https://github.com/iGeeky/wolf/blob/master/agent/lua/body_filter.lua
@kaf 参考这个代码吧, 也是鉴权后, 在页面添加鉴权信息的. |