Я экспериментировал с динамической конфигурацией восходящего потока для nginx и не мог найти никакого хорошего решения для реализации восходящей конфигурации из стороннего источника, такого как redis или mysql.
Идея состоит в том, чтобы иметь единую конфигурацию файла на основном сервере и запросы прокси к различным серверам приложений в зависимости от условий среды. Подумайте о динамических развертываниях, где у вас есть X-серверы, на которых работают Y-рабочие на разных портах. Например, я создаю новое приложение и развертываю. Диспетчер приложений выбирает сервер, а затем запускает рабочий (Ruby / PHP / Python), а затем сообщает ip: port в центральную базу данных со статусом «up». В это время, когда я перехожу к заданному URL-адресу, nginx должен проксировать все запросы на указанный восходящий IP: порт. Все это очень похоже на то, что делает heroku, за исключением того, что это доказательство концепции не должно быть готово к производству, в основном для внутренних нужд.
Самым простым решением, которое я нашел, было использование преобразователя с DNS-сервером на основе рубина. Это работает, nginx правильно получает IP-адрес, но единственная проблема в том, что вы не можете определить номер порта для этого IP.
Второе решение (которое я еще не пробовал) - использовать что-то еще в качестве прокси-сервера, возможно, написанное на Erlang. В этом случае нам нужно использовать что-то для обслуживания статического контента.
Есть идеи, как реализовать это более гибким и стабильным способом?
P.S. Некоторые варианты исследования:
Похоже, что предыдущий ответ Дэна больше соответствует тому, что вы думаете.
Но я написал обратный прокси на основе node.js, который позволил бы легко достичь этого:
Здесь в точности то, что упоминал Майкл Хэмптон - реализация динамического восходящего потока с использованием Lua
http://sosedoff.com/2012/06/11/dynamic-nginx-upstreams-with-lua-and-redis.html