подстановка переменных в имя апстрима.

syswipe nginx-forum на forum.nginx.org
Ср Мар 1 16:06:20 UTC 2017


Добрый день!

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

VHOST1.conf:

upstream upstream_vhost1_backend {
   server host1;
   server host2;
}

server {
  server vhost1;
  ...
  set $upstream_backend upstream_vhost1_backend;
  include common_config;
}

VHOST2.conf:

upstream upstream_vhost2_backend {
   server host3;
   server host4;
}

server {
  server vhost2;
  ...
  set $upstream_backend upstream_vhost2_backend;
  include common_config;
}

в common_config задается соответствующий локейшн:
...
location /somelocation {
   proxy_pass http://$upstream_backend;
}

тут все хорошо. проблема начинается, когда в common_config нужно задать
локейшены следующего вида:
location /somelocation/module1/ {
   proxy_pass http://$upstream_module1;
}

location /somelocation/module2/ {
   proxy_pass http://$upstream_module2;
}

location /somelocation/moduleN/ {
   proxy_pass http://$upstream_moduleN;
}

проблема в том, что количество таких схожих локейшенов может расти и
хотелось бы конфиг свернуть.
хочется получить что-то вроде

location ~ ^/somelocation/module(\d+)/ {
   proxy_pass http://$upstream_module$1;
}

как это сделать по уму?

Posted at Nginx Forum: https://forum.nginx.org/read.php?21,272691,272691#msg-272691



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