Перенаправить запрос в CDN с помощью nginx - PullRequest
7 голосов
/ 26 сентября 2011

У меня есть несколько адресов серверов, таких как cdn1.website.com, cdn2.website.com, cdn3.website.com.Каждый из них содержит одинаковые файлы.

Запрос приходит на мой сервер, и я хочу перенаправить или переписать его на произвольный сервер cdn.Возможно ли это?

Ответы [ 2 ]

7 голосов
/ 27 сентября 2011

Вы можете попробовать использовать модуль разделения клиентов :

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;
    }
  }
}
0 голосов
/ 26 сентября 2011

Это, конечно, возможно.Nginx поставляется с балансировкой нагрузки:

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

Это определяет 2 сервера для балансировки нагрузки.По умолчанию запросы будут равномерно распределены по всем определенным серверам.Однако вы можете добавить веса к записям сервера.

В конфигурации вашего сервера {} вы можете добавить следующее для передачи входящих запросов в балансировщик нагрузки (например, для балансировки нагрузки всех запросов для каталога images):

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

Более подробное описание смотрите в документации .

...