【Nginx】nginx配置跳转实现接口静态化

1.配置nginx跳转到oss静态化地址;

2.oss bucket配置回源到服务端接口;

3.服务端接口有处理oss bucket回源地址,按规则拼装完整url以后redirect;

4.服务端需要提供清理oss文件的接口;

5.静态化域名配置:域名解析到OSS地址,CDN加速域名解析到OSS地址,OSS配置域名;

Lua 复制代码
location = /v2/org/getSlideShow {
        set $flag 0;
        if ($args ~ is_from_cdn=(\d+)){
                set $flag "${flag}1";
        }
        if ($flag = "0"){
                rewrite ^ https://www.baidu.com/(v2)_(org)_(getSlideShow)__(instance_id)_(${arg_instance_id})_(block_id)_(${arg_block_id})? permanent;
        }
        #正常处理请求
        if ( !-e $request_filename ) {
        rewrite ^/(.*)$ /index.php?s=/$1 last;
    }
}

这段nginx配置代码是一个location指令,它指定了一个匹配特定URL路径的请求的处理方式。

具体功能如下:

  1. location = /v2/org/getSlideShow:指定匹配的URL路径为"/v2/org/getSlideShow"。
  2. set $flag 0:设置一个名为$flag的变量,并将其初始值设为0。
  3. if ($args ~ is_from_cdn=(\d+)):检查请求参数中是否存在名为"is_from_cdn"的参数,并且其值为一个数字。
  4. set $flag "${flag}1":如果条件3成立,则将$flag变量的值追加一个"1"。
  5. if ($flag = "0"):检查$flag变量的值是否为"0"。
  6. rewrite ^ https://www.baidu.com/(v2)_(org)_(getSlideShow)__(instance_id)_(${arg_instance_id})_(block_id)_(${arg_block_id})? permanent;:如果条件5成立,则将请求重定向到"https://apidata.magook.com/",并根据参数"instance_id"和"block_id"的值进行构建URL。
  7. if ( !-e $request_filename ):检查请求的文件是否存在。
  8. rewrite ^/(.*)$ /index.php?s=/$1 last;:如果条件7不成立,则将请求重定向到"/index.php",并将请求的URL路径作为参数传递给index.php脚本。

总体来说,这段配置代码的功能是:

  • 当请求的URL路径为"/v2/org/getSlideShow"且参数"is_from_cdn"为数字时,将$flag变量设置为"1"。
  • 如果$flag变量的值为"0",则将请求重定向到另一个URL。
  • 如果请求的文件不存在,则将请求重定向到"/index.php",并将请求的URL路径作为参数传递给该脚本。

为什么要用${arg_instance_id}

在上述的nginx配置代码中,${arg_instance_id}${arg_block_id}是变量引用,用于获取传递给请求的参数"instance_id"和"block_id"的值。

在nginx中,通过$arg_param可以获取传递给请求的参数的值,其中param是参数的名称。因此,${arg_instance_id}${arg_block_id}分别引用了请求参数"instance_id"和"block_id"的值。

这样做的目的是为了动态地构建URL,以便将请求重定向到正确的位置。根据参数的值构建URL,可以实现更加灵活的请求路由和重定向逻辑。

相关推荐
GuWenyue4 小时前
放弃云端API!一套React+WebGPU本地LLM方案,零数据上传、离线可用
前端·人工智能·前端框架
海阔天空任鸟飞~5 小时前
Linux 权限 777
linux·运维·服务器
原则猫5 小时前
函数/变量提升
前端
独泪了无痕6 小时前
Vue3 Hooks使用实战解析
前端·vue.js
IT瑞先生7 小时前
docker-compose下快速部署实操——持续更新...
运维·docker·容器
无锡银洲自动化7 小时前
工业模拟量采集痛点分析:IDCB-4E/DR/Y测量前端解决方案
运维·产品运营
shawxlee7 小时前
vue3在public下封装config.js自定义配置动态数据,可在打包后直接修改,方便后端部署及后续维护
前端·javascript·经验分享·vue·团队开发·js·项目优化
Kina_C8 小时前
Linux iptables 防火墙原理与实操——从四表五链到 NAT 配置
linux·运维·服务器·iptables
用户059540174468 小时前
把记忆存储的回归测试从手工换成 Playwright + GitHub Actions,线上缺陷降低 80%
前端·css
触底反弹8 小时前
🚀 从 DOM0 级到 React 合成事件:前端事件监听的 20 年演进史
前端·react.js·面试