醉了,感觉 sub_filter 模块好像不大带宽服务器能替换 POST url 返回的 json 字符串似的,,
各位有什么招,,,
并不是 proxy_set_header Accept-Encoding "";的问题。
sub_filter 就是个文本替换,没什么不可以的。只要你能定位到字符串的位置,通常来说只能用正则。
你的意思是使用 sub_filter 和正则结合实现替换的目的?
直接上 openresty
这个可以实现吗?
location / {
proxy_pass http://pop.abcd.com;
proxy_set_header Host pop.abcd.com;
proxy_set_header Accept-Encoding "";
subs_filter pop.abcd.com 112.6.226.18:9000 gi;
}
可以,gzip 也能解决。自己有个练手玩的项目,可以参考一下。
https://github.com/TomCzHen/simple-api-gateway/blob/master/openresty/lua/request_gateway.lua
subs_filter 可以实现吗?感觉和 sub_filter 没啥区别啊,,
gi 表示全局替换。这够你用了吧
我试着安装一下这个第三方模块测试一下吧,,
亲测无效,以下是我的配置:
subs_filter 's3.amazonaws.com/adwords.yesssbi.com' 'elasnode.trudsiu.com' gi;
subs_filter_types application/json;
/t/234923
推荐一波 openresty
求解 openresty 怎么实现我这个需求。
*;
sub_filter_types 'application/json';
sub_filter 'abcd' 'dcba';
sub_filter_once off;
默认只替换 text/html 可以通过 sub_filter_types 指定类型, *代表所有类型。
就在 10 分钟之前才用这个功能临时解决 php 打印错误信息导致 json 非法的问题, 给程序填坑, 哈哈。
另外你试试直接放到 server 下, 我放 location 下无效, 急着解决问题没有进一步查找原因。
sub_filter 不行的,我写成这样:
sub_filter_types *;
然后查看效果是无效的。
你确定替换成功的是 POST 请求返回的 json 串里的内容吗?
http://101.207.249.253:8000/adwords.yesssbi.com
返回的是个 xml,我已经把 adwords.yessbi.com 换成 elasnode.trudsiu.com
你我不知道要提交什么 json,所以根据你情况自己修改就好。
location / {
proxy_pass http://s3.amazonaws.com;
proxy_set_header Host 101.207.249.253;
proxy_set_header Accept-Encoding "";
subs_filter_types application/xml text/html text/css text/xml;
subs_filter adwords.yesssbi.com elasnode.trudsiu.com gi;
}
我替换的也是 POST 返回的字符串。
最简单的方法你弄一个简单的返回内容来测试一下, 先从最简单的替换开始测试, 确保不是你替换规则写的有问题。
sub_filter_types *; 这个是可以的,亲测有效。