使用 nginx 将请求重定向到 CDN

发布于 2024-12-06 23:20:43 字数 133 浏览 1 评论 0原文

我有几个服务器地址,例如 cdn1.website.com、cdn2.website.com、cdn3.website.com。他们每个人都拥有相似的文件。

请求到达我的服务器,我想将其重定向或重写到随机 CDN 服务器。 是否可以 ?

I have a couple of server addreses, like cdn1.website.com, cdn2.website.com, cdn3.website.com. Each of them holds simillar files.

Request comes to my server and I want to redirect or rewrite it to a random cdn server.
Is it possible ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

凯凯我们等你回来 2024-12-13 23:20:43

您可以尝试使用 分割客户端 模块:

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;
    }
  }
}

You could try using the split clients module:

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;
    }
  }
}
君勿笑 2024-12-13 23:20:43

这当然是可能的。 Nginx 带有负载平衡:

upstream  mysite  {
   server   www1.mysite.com;
   server   www2.mysite.com;
}

这定义了 2 个服务器用于负载平衡。默认情况下,请求将均匀分布在所有定义的服务器上。但是,您可以向服务器条目添加权重。

在您的 server {} 配置中,您现在可以添加以下内容以将传入请求传递到负载平衡器(例如,对图像目录的所有请求进行负载平衡):

location /images/ {
      proxy_pass  http://mysite;
}

查看 文档 了解更详细的描述。

This is of course possible. Nginx comes with load balancing:

upstream  mysite  {
   server   www1.mysite.com;
   server   www2.mysite.com;
}

This defines 2 servers for load balancing. By default requests will be equally distributed across all defined servers. You can however add weights to the server entries.

Inside your server {} configuration you can now add the following to pass incoming requests to the load balancer (e.g. to load balance all requests for the images directory):

location /images/ {
      proxy_pass  http://mysite;
}

Have a look at the documentation for a more detailed description.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文