Динамический upstream средствами dns в открытой версии nginx
Иван
nginx на kinetiksoft.com
Вт Мар 19 15:30:34 UTC 2019
Здравствуйте!
Есть необходимость выбирать апстрим для проксирования на основании
информации из mysql-базы. Есть мысль задействовать для этого DNS-сервер
с поддержкой mysql в бэкэнде (и A\AAAA записи с небольшим, порядка 30-60
секунд TTL), например, powerdns и nginx примерно в такой конфигурации:
Пусть DNS отвечает на 127.0.1.1:53 . У него бэкэнд в мускуле, в котором
сотни A\AAAA записей вида
user1.room1.example.com -> 1.1.1.1
user2.room1.example.com -> 1.10.1.2
user3.room2.example.com -> 1.200.1.100
и т.п.
которые (записи) периодически (раз в несколько часов) обновляет наше ПО.
В nginx на прокси примерно такая конфигурация:
location ~ ^/user/(?<room>\w+)/(?<user>\w+)$ {
resolver 127.0.1.1;
proxy_pass http://$user.$room.example.com;
}
Будет ли в такой конфигурации запрос вида GET /user/room2/user3 к прокси
уходить на 1.200.1.100, а GET /user/room1/user2 к прокси уходить на
1.10.1.2,
Когда я последний раз думал над этой схемой, мне казалось, что тут
что-то доступно только в коммерческой подписке.
С уважением, Иван.
Подробная информация о списке рассылки nginx-ru