使用nginx将请求重定向到CDN

时间:2011-09-26 13:41:28

标签: proxy nginx rewrite cdn

我有几个服务器地址,比如cdn1.website.com,cdn2.website.com,cdn3.website.com。他们每个人都持有simillar文件。

请求来到我的服务器,我想将其重定向或重写到随机的cdn服务器。 有可能吗?

2 个答案:

答案 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以获取更详细的说明。