我的使用场景主要是给Cloudreve的OneDrive的链接进行的随机分流。使用到 split_clients模块进行分发,split_clients主要是用来做请求分流的,根据一定的规则把流量分配到不同的后端服务或者配置上。比如说AB测试、灰度发布之类的场景。
Split Clients支持多种标准进行分流,例如:
IP地址:将某些IP地址的请求单独筛选出来,比如测试环境或者特定机器组。
User-Agent:根据客户端浏览器的类型或版本进行分发,来测试不同浏览器的兼容性。
Cookie:根据某些Cookie值来分发请求,比如某些用户组、地区或语言偏好等。
本文实例利用时区和ip地址进行区分
split_clients "${remote_addr}${time_local}" $split_var {
33% "url1";
33% "url2";
33% "url3";
}
# 将split变量映射到对应的目标URL
map $split_var $target_domain {
url1 "114514.com";
url2 "1919810.com";
url3 "1145141919810.com";
}
server 块这样写的,$request_uri为原有的请求url路径。
location / {
# 拼接完整的URL并保留参数
return 302 https://$target_domain$request_uri;
}