Вложенный upstream

Vladimir Stackov amigo.elite на gmail.com
Ср Ноя 25 21:30:34 UTC 2015


Привет всем,

сейчас приходится делать так:

http {

upstream a {
 server 1.1.1.1:8080;
 server 2.2.2.2:8080 backup;
}
server {
 listen 127.0.0.1:8081;
 location {
  proxy_pass http://a;
 }
}

upstream b {
 server 3.3.3.3:8080;
 server 2.2.2.2:8080 backup;
}
server {
 listen 127.0.0.1:8082;
 location {
  proxy_pass http://b;
 }
}

upstream main {
 server 127.0.0.1:8081;
 server 127.0.0.2:8082;
 hash $http_x_key consistent;
}
server {
 listen *:80;
 location {
  proxy_pass http://main;
 }
}

Есть ли какие-нибудь подходы/патчи, позволяющие nginx'у не проксировать
через себя лишний раз?
Ну, кроме переменной в proxy_pass вместо "main" и embedded perl/lua/js для
присвоения нужного значения.
Т.е. что-то вроде

upstream a {
 server 1.1.1.1:8080;
 server 2.2.2.2:8080 backup;
}
upstream b {
 server 3.3.3.3:8080;
 server 2.2.2.2:8080 backup;
}
upstream main {
 upstream a;
 upstream b;
 hash $http_x_key consistent;
}
server {
 listen *:80;
 location {
  proxy_pass http://main;
 }
}

или

upstream main {
 upstream a {
  server 1.1.1.1:8080;
  server 2.2.2.2:8080 backup;
 }
 upstream b {
  server 3.3.3.3:8080;
  server 2.2.2.2:8080 backup;
 }
 hash $http_x_key consistent;
}
server {
 listen *:80;
 location {
  proxy_pass http://main;
 }
}

-- 
Kind regards,
Vladimir.
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20151126/28a139dc/attachment.html>


Подробная информация о списке рассылки nginx-ru