当前位置: 首页 > article >正文

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

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 then
    ngx.ctx.buffered = {}
end

-- 如果非最后一次响应,将当前响应赋值
if chunk ~= "" and not ngx.is_subrequest then
    table.insert(ngx.ctx.buffered, chunk)

    -- 将当前响应赋值为空,以修改后的内容作为最终响应
    ngx.arg[1] = nil
end

-- 如果为最后一次响应,对所有响应数据进行处理
if eof then
    -- 获取所有响应数据
    local whole = table.concat(ngx.ctx.buffered)

    ngx.ctx.buffered = nil

    if not whole then
        ngx.log(ngx.NOTICE, "Response-Response Body Is Null: ", whole)
        return
    end

    -- 进行你所需要进行的处理
    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.kler.cn/a/454728.html

相关文章:

  • OpenHarmony怎么修改DPI密度值?RK3566鸿蒙开发板演示
  • 单片机与MQTT协议
  • AT24C02学习笔记
  • C/C++ 数据结构与算法【树和森林】 树和森林 详细解析【日常学习,考研必备】带图+详细代码
  • Vue.js 高级组件开发:抽象与高性能架构
  • STM32使用UART发送字符串与printf输出重定向
  • 集成方案 | Docusign + 蓝凌 EKP,打造一站式合同管理平台,实现无缝协作!
  • 双指针——查找总价格为目标值的两个商品
  • SQL进阶技巧:如何分析双重职务问题?
  • xwd-ant组件库笔记
  • 气相色谱-质谱联用分析方法中的常用部件,分流平板更换
  • 学一学前沿开发语言之Python
  • Vue3项目中引入TailwindCSS(图文详情)
  • 【分享】Pytorch数据结构:Tensor(张量)及其维度和数据类型
  • 《Transformer:AI 领域的变革力量》
  • 深度解析:电商平台API接口的安全挑战与应对策略
  • 修改网络ip地址方法有哪些?常用的有这四种
  • sod123(封装大一点)和sod323的区别
  • 贪心算法(常见贪心模型)
  • Vue BPMN Modeler流程图
  • 安卓 SystemServer 启动流程
  • 24. 解密犯罪时间
  • Unity3D ECS 内存分配器原理
  • 电商矩阵运营服务器怎么选
  • IP协议(网络)
  • 电子应用设计方案75:智能家庭智能锁系统设计