我有几个服务器地址,比如cdn1.website.com,cdn2.website.com,cdn3.website.com。他们每个人都持有simillar文件。
请求来到我的服务器,我想将其重定向或重写到随机的cdn服务器。 有可能吗?
答案 0 :(得分:7)
您可以尝试使用split clients模块:
http {
# Split clients (approximately) equally based on
# client ip address
split_clients $remote_addr $cdn_host {
33% cdn1;
33% cdn2;
- cdn3;
}
server {
server_name example.com;
# Use the variable defined by the split_clients block to determine
# the rewritten hostname for requests beginning with /images/
location /images/ {
rewrite ^ http://$cdn_host.example.com$request_uri? permanent;
}
}
}
答案 1 :(得分:0)
这当然是可能的。 Nginx带有负载平衡:
upstream mysite {
server www1.mysite.com;
server www2.mysite.com;
}
这定义了2个用于负载平衡的服务器。默认情况下,请求将平均分配到所有已定义的服务器。但是,您可以为服务器条目添加权重。
在您的服务器{}配置中,您现在可以添加以下内容以将传入请求传递到负载均衡器(例如,对图像目录的所有请求进行负载均衡):
location /images/ {
proxy_pass http://mysite;
}
请查看documentation以获取更详细的说明。