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/