Назад | Перейти на главную страницу

Nginx динамическая конфигурация / маршрутизация восходящего потока

Я экспериментировал с динамической конфигурацией восходящего потока для 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