1.配置nginx跳转到oss静态化地址;
2.oss bucket配置回源到服务端接口;
3.服务端接口有处理oss bucket回源地址,按规则拼装完整url以后redirect;
4.服务端需要提供清理oss文件的接口;
5.静态化域名配置:域名解析到OSS地址,CDN加速域名解析到OSS地址,OSS配置域名;
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路径的请求的处理方式。
具体功能如下:
location = /v2/org/getSlideShow
:指定匹配的URL路径为"/v2/org/getSlideShow"。set $flag 0
:设置一个名为$flag的变量,并将其初始值设为0。if ($args ~ is_from_cdn=(\d+))
:检查请求参数中是否存在名为"is_from_cdn"的参数,并且其值为一个数字。set $flag "${flag}1"
:如果条件3成立,则将$flag变量的值追加一个"1"。if ($flag = "0")
:检查$flag变量的值是否为"0"。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。if ( !-e $request_filename )
:检查请求的文件是否存在。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,可以实现更加灵活的请求路由和重定向逻辑。