Может ли nginx циклически перебирать список серверов на разных портах?

Я хочу отобразить определенный домен в nginx, а затем использовать циклический перебор nginx в список серверов, которые будут отвечать на запросы http.

Так что у меня есть nginx для www.domain1.com

Это приложение на python, и у меня есть 10 экземпляров пасты, запущенных на разных портах, которые я хочу, чтобы nginx переадресовывал запросы / прокси на использование round-robin.

может ли это сделать, если да, то как?

2 ответа

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

upstream mybackend  {
    server localhost:8080;
    server localhost:8081;
    server localhost:8082;
    server localhost:8083;
    server localhost:8084;
    server localhost:8085;
    server localhost:8086;
    server localhost:8087;
    server localhost:8088;
    server localhost:8089;
}

server {
  location / {
    proxy_pass  http://mybackend;
  }
}

На самом деле, вам лучше использовать для этого что-то вроде haproxy, но nginx может использовать прокси на нескольких серверах в бэкэнде.

Взгляните на вышестоящий модуль для nginx http://wiki.nginx.org/NginxHttpUpstreamModule

Установите одинаковый вес вышестоящих серверов для распределенной циклической балансировки. например

upstream backend { 
     server ww1.domain.com weight=10;
     server ww2.domain.com weight=10;
}

По умолчанию вес равен 1, поэтому технически вам не нужен вес 10, но установка более высокого веса по умолчанию позволяет легко представить сервер с меньшим весом.

Другие вопросы по тегам