nginx域名随机跳转到指定域名


场景说明

有时候需要将某个域名跳转到其他域名上,例如:

用户访问 a.com,nginx 会随机分配到 b.com、c.com、d.com…


实现方法

使用 map 映射变量,通过 request_id 生成随机值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 定义跳转目标域名
map $mod3 $redirect_domain {
1 "https://b.com";
2 "https://c.com";
3 "https://d.com";
}

# 映射变量
map $my_variable $mod3 {
"~([1-3])" $1;
}

server {
listen 80;
server_name a.com;

location / {
set $my_variable $request_id;

if ($mod3) {
return 302 $redirect_domain$request_uri;
}
}
}

注意:正则表达式需要根据实际规则调整。