Я задал этот вопрос в stackoverflow, но получил очень мало просмотров: https://stackoverflow.com/questions/2284917/route-web-requests-to-different-servers-based-on-subdomain
Возможно, это больше применимо к этой толпе. И снова для удобства:
У меня есть платформа, на которой пользователь может создать новый веб-сайт, используя поддомен. Их будут тысячи, например abc.mydomain.com, def.mydomain.com. Надеюсь, если мы добьемся успеха сотнями тысяч.
Мне нужно иметь возможность маршрутизировать эти домены на разные IP-адреса, чтобы указывать на конкретный сервер приложений. У меня есть это отображение в базе данных прямо сейчас.
Какие здесь лучшие практики и рекомендуемые технологии?
Я вижу пару вариантов:
Спасибо.
Обновление2: Я установил внешний DNS с подстановочными знаками, указывающий на веб-сервер HAProxy, чья работа заключается в маршрутизации запросов на внутренние серверы. Сопоставление хранится на нашем внутреннем сервере PowerDNS. Теперь вопрос в том, как заставить HAProxy-сервер (или другой) использовать значение внутреннего DNS, а не какой-то файл конфигурации или список доступа? -
Обновить: Основываясь на некоторых предложениях, приведенных ниже, похоже, что обратный прокси-сервер (-ы) - это правильный путь. Поскольку я буду перебалансировать сопоставление домен-> сервер, они должны работать мгновенно, и TTL в решении DNS может быть проблемой. Любые рекомендации по использованию программного обеспечения, учитывая, что этот домен -> данные IP хранятся в БД, и мне нужно, чтобы это работало?
Учитывая вашу потребность в переключении между серверами в режиме реального времени, я не могу рекомендовать решение на основе DNS - слишком много клиентов просто не заметят изменений.
Все эти серверы будут на одном сайте? Устойчивый интерфейсный «обратный прокси» с доступом к таблице сопоставления клиент -> сервер кажется самым простым.
hipache кажется именно тем, что вам нужно. вы можете динамически добавлять и удалять поддомены, просто добавляя и удаляя записи Redis:
Если я понимаю прямо, у вас будет много:
subdomains.domain.com
Насчет настройки прокси-сервера.
В DNS вы устанавливаете подстановочный знак для * .domain.com и указываете его на свой обратный прокси-сервер.
На обратном прокси-сервере запустите собственный DNS или используйте файл хоста для сопоставления запроса с соответствующим внутренним сервером.
Таким образом, путь будет: клиент -> обратный прокси ---> внутренний сервер
Я бы выбрал второе решение, используя PowerDNS
и это бэкэнд трубы, вам просто нужно написать программу, которая сможет читать запросы и писать ответы из stdin / stdout через красивый просто протокол