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

相关推荐
北极糊的狐2 分钟前
若依项目vue前端启动键入npm run dev 报错:不是内部或外部命令,也不是可运行的程序或批处理文件。
前端·javascript·vue.js
XRJ040618xrj4 分钟前
Nginx下构建PC站点
服务器·前端·nginx
We་ct13 分钟前
LeetCode 289. 生命游戏:题解+优化,从基础到原地最优
前端·算法·leetcode·矩阵·typescript
有诺千金1 小时前
VUE3入门很简单(4)---组件通信(props)
前端·javascript·vue.js
2501_944711431 小时前
Vue-路由懒加载与组件懒加载
前端·javascript·vue.js
江畔何人初1 小时前
/etc/profile,.profile,.bashrc三者区分
linux·运维·云原生
会飞的土拨鼠呀1 小时前
Ubuntu系统缺少 iptables 工具
linux·运维·ubuntu
前端玖耀里1 小时前
详细介绍Linux命令dig和nslookup
linux·运维·服务器
星期五不见面1 小时前
jetson naon super使用 sudo /opt/nvidia/jetson-io/jetson-io.py 界面闪退
linux·运维·服务器
雨季6661 小时前
Flutter 三端应用实战:OpenHarmony “心流之泉”——在碎片洪流中,为你筑一眼专注的清泉
开发语言·前端·flutter·交互