nginx(openresty) lua 解决对接其他平台,响应文件中地址跨域问题

ops/2024/12/26 2:40:56/

location 添加配置

# location  添加的配置
# 作用:清空body体中的内,使得在lua处理响应体是,重新计算返回大小【如果不置空,它会保留原始响应体大小,导致处理数据的时候出现截断的问题】
header_filter_by_lua 'ngx.header.content_length = nil';
# 配置指定使用的lua脚本
body_filter_by_lua_file conf/lua_script/response.lua;

lua脚本文件

#response.lua;脚本内容
-- 获取当前响应数据
local chunk, eof = ngx.arg[1], ngx.arg[2]-- 定义全局变量,收集全部响应
if ngx.ctx.buffered == nil thenngx.ctx.buffered = {}
end-- 如果非最后一次响应,将当前响应赋值
if chunk ~= "" and not ngx.is_subrequest thentable.insert(ngx.ctx.buffered, chunk)-- 将当前响应赋值为空,以修改后的内容作为最终响应ngx.arg[1] = nil
end-- 如果为最后一次响应,对所有响应数据进行处理
if eof then-- 获取所有响应数据local whole = table.concat(ngx.ctx.buffered)ngx.ctx.buffered = nilif not whole thenngx.log(ngx.NOTICE, "Response-Response Body Is Null: ", whole)returnend-- 进行你所需要进行的处理ngx.log(ngx.NOTICE, "Response-Digest Business Param String: ", whole)--原始地址local str ="1.8.2.3:8084"--新地址local str1 = "10.14.65.129:9901"-- string.gsub(whole,str,str1)-- 重新赋值响应数据,以修改后的内容作为最终响应ngx.arg[1] = string.gsub(whole,str,str1)
end

场景:

在原有的平台,外挂三方的链接,三方只对服务ip开通访问权限,所有客户端访问都失败,现在采用所有访问三方的地址,都改为服务端的地址,通过服务端地址代理解决这个问题。也就是将1.8.2.3:8084替换为服务器ip10.14.65.129,然后通过nginx或者openresty代理区解决


http://www.ppmy.cn/ops/145004.html

相关文章

Hive SQL 之 `LATERAL VIEW EXPLODE` 的正确打开方式

一文彻底搞懂 LATERAL VIEW EXPLODE 1. 引言 在处理复杂数据结构(如数组、映射)时,Hive SQL 提供了强大的功能来简化查询和数据分析。其中,LATERAL VIEW 和 EXPLODE 是两个特别有用的关键字,它们可以帮助我们将复杂的…

短视频运营行业该如何选择服务器?

在互联网快速发展的时代,短视频行业也应运而生,企业为了保证用户能够浏览流畅且稳定的短视频,则需要选择一台合适的服务器来运行相关业务,本文就来探讨一下短视频运营行业该如何选择服务器吧! 短视频行业一般需要处理大…

迈向未来:.NET技术的持续创新与发展前景

随着信息技术的飞速发展,编程语言和开发框架不断涌现,许多技术平台以其独特的优势赢得了开发者的青睐。在这场技术的竞争中,.NET平台凭借其卓越的性能、广泛的生态系统以及持续创新的精神,成为了全球开发者的重要选择。本文将探讨…

pycharm debug代码跳到c盘的一个临时文件夹里

问题:在pycharm debug代码时跳到c盘的一个临时文件夹里。 解决方法: 即使是在tools的develop里面填好mapping了,也必须在debug的设置里面填好mapping。

防抖、幂等和防超卖

防抖和幂等 接口防抖(Debounce)和幂等是两个不同的概念,但它们确实在某些场景下可以达到类似的效果,都旨在避免多次重复操作造成的问题。 防抖的主要目的是控制高频操作的触发,确保在一定时间间隔内只执行一次请求。…

React+TypeScript+Tailwind 实现圣诞祝福网页

圣诞节快要到啦,提前祝大家圣诞节快乐!!! 项目完整源码在最后哦✨ 视频 (一):项目环境搭建 在这个教程中,我们将一步步创建一个精美的圣诞祝福网页。本文是系列的第一部分&#xf…

【LuaFramework】服务器模块相关知识

目录 一、客户端代码 二、本地服务器代码 三、解决服务器无法多次接收客户端消息问题 一、客户端代码 连接本地服务器127.0.0.1:2012端口(如何创本地服务器,放最后说),连接成功后会回调 协议号Connect是101,其他如下…

音视频学习(二十七):SRT协议

SRT(Secure Reliable Transport)是一种开源的网络传输协议,专为实时音视频数据传输设计,具有低延迟、高可靠性和安全性等特点。 核心功能 SRT协议旨在解决实时音视频传输中的网络抖动、丢包、延迟和安全问题,提供以下…