【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,可以实现更加灵活的请求路由和重定向逻辑。

相关推荐
ErMao1 分钟前
TypeScript的泛型工具集合
前端·javascript
涔溪13 分钟前
如何解决微前端架构中主应用和微应用的通信问题?
前端·架构
想唱rap25 分钟前
C++ map和set
linux·运维·服务器·开发语言·c++·算法
重铸码农荣光35 分钟前
深入理解 JavaScript 原型链:从 Promise.all 到动态原型的实战探索
前端·javascript·promise
我叫黑大帅42 分钟前
什么叫可迭代对象?为什么要用它?
前端·后端·python
颜渊呐42 分钟前
Vue3 + Less 实现动态圆角 TabBar:从代码到优化实践
前端·css
PineappleCoder1 小时前
pnpm 凭啥吊打 npm/Yarn?前端包管理的 “硬链接魔法”,破解三大痛点
前端·javascript·前端工程化
fruge1 小时前
前端文档自动化:用 VitePress 搭建团队技术文档(含自动部署)
运维·前端·自动化
z***56561 小时前
Nginx实现接口复制
运维·nginx·junit
y***86691 小时前
DevOps在云中的自动化部署
运维·自动化·devops