openresty改写302的Location
引言
本文介绍了使用openresty修改302重定向地址和参数的方法,能够应对内外网访问不一致的问题;openresty集成了lua以及众多实用的工具和模板,比nginx还是要方便不少;proxy_redirect的缺陷是只能修改域名和端口,不能很好应对复杂情况.
原文地址: http://blog.duhbb.com/2022/02/15/usage-of-openresty-in-rewriting-302-location/
欢迎访问我的博客: http://blog.duhbb.com/
解决的问题
嘿嘿, openresty 真的是神器, YYDS!
以上使用 lua 修改 nginx 302 重定向后的 Location, 使得将 Location 中的内网变成外网访问的地址.
对应的还有:
body_filter_by_lua
- 获取到所有请求的响应数据
- 对所有请求的响应数据进行敏感信息检测
- 检测到敏感数据返回,进行脱敏处理后再进行响应
注意:
- 文档中指出body_filter_by_lua可能会在一次请求中多次调用
- 当代码运行到body_filter_by_lua时,HTTP报头(header)已经发送出去了。如果在之前设置了跟响应体相关的报头,而又在body_filter_by_lua中修改了响应体,会导致响应报头和实际响应的不一致。举个简单的例子:假设上游的服务器返回了Content-Length报头,而body_filter_by_lua又修改了响应体的实际大小。客户端收到这个报头后,如果按其中的 Content-Length去处理,那他就掉坑里了。由于Nginx的流式响应,发出去的报头就像泼出去的水,要想修改只能提前进行。OpenResty提供了跟body_filter_by_lua相对应的header_filter_by_lua。
参考文档
- https://blog.csdn.net/weixin_33734785/article/details/89124813
- https://blog.csdn.net/ygm_linux/article/details/81563129
- https://blog.csdn.net/wtswjtu/article/details/38898945
- https://zhuanlan.zhihu.com/p/67904411
结束语
本文介绍了使用openresty修改302重定向地址和参数的方法,能够应对内外网访问不一致的问题;openresty集成了lua以及众多实用的工具和模板,比nginx还是要方便不少;proxy_redirect的缺陷是只能修改域名和端口,不能很好应对复杂情况.
原文地址: http://blog.duhbb.com/2022/02/15/usage-of-openresty-in-rewriting-302-location/
欢迎访问我的博客: http://blog.duhbb.com/