2015-05-11 5 views
0

Интересно, есть ли простой способ (простой = nginx conf без расширения lua/perl) для достижения следующего.Nginx, Pairing Client и Upstream Ports

Учитывая следующий сервер и слушатели вверх по течению:

upstream backend{ 
    server 1.2.3.4:9080; 
    server 1.2.3.4:9081; 
    server 1.2.3.4:9082; 
} 


server { 
    listen 8080; 
    listen 8081; 
    listen 8082; 
    ... 
    proxy_pass backend; 
} 

Это требование заключается в том, что весь трафик, который подключен к порту данного, будет передаваться через proxy_pass к эквивалентному порту на входе.

Возможно, upstream не будет использоваться в этом случае, скорее я буду использовать $http_port или аналогичный, любые рекомендации будут оценены.

ответ

0

TL; DR: ngx_http_upstream_module не разработан таким образом.

Хотя можно использовать "route method" for session affinity, такой подход приведет вас к очень неясным config.

Рассмотрите возможность использования нескольких блоков server. Нечто подобное:

server { 
    listen 8080; 
    location/{ 
     proxy_pass http://1.2.3.4:9080; 
    } 
} 
server { 
    listen 8081; 
    location/{ 
     proxy_pass http://1.2.3.4:9081; 
    } 
} 
# ...and so on 
0

Раствор, я закончил с использованием Lua было установить переменную (upstream_port), который затем используется как:

proxy_pass http://$upstream_host:$upstream_port$request_uri 
Смежные вопросы