Может ли 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, но установка более высокого веса по умолчанию позволяет легко представить сервер с меньшим весом.