Как включить динамические пользовательские домены
Я разработчик веб-приложения SAAS и плагина для excel.
С помощью нашего продукта пользователи могут делиться результатами своей работы с третьими лицами через браузерную ссылку. Формат браузерной ссылки на сегодняшний день - nameofourwebsite.io/titleofoutput. Я хочу реализовать две версии функции:
- В версии V1 я хотел бы дать пользователям возможность создавать пользовательский домен в в виде companyname.website.io/titleofspreadsheet. Я уже являюсь владельцем домена website.io. .
- В качестве V2 (будет реализовано позже) я хотел бы, чтобы пользователи могли приводить свой собственный домен, аналогично реализации в Stripe (https://docs.stripe.com/payments/checkout/custom-domains). Другими другими словами, когда пользователь делится в браузере ссылкой на результаты своей работы вместо ссылки companyname.website.io/titleofspreadsheet браузерная ссылка будет выглядеть примерно так customprefix.companywebsite.com/titleofworkbook.
Я не уверен, как решить эту проблему, и прошу совета, какие шаги нам нужно предпринять.
В том, что вы хотите сделать, есть два разных аспекта:
Для 1. Вам нужно разработать систему автоматизации, чтобы, когда кто-то добавляет новый сайт в вашей существующей системе, вы могли автоматически создать поддомен в DNS-зоне website.io и вывести его в активное состояние. Учтите, что количество времени, необходимое для того, чтобы стать "живым для мира", будет зависеть от отрицательного времени кэширования в SOA-записи вашей зоны.
Для 1 и 2 вам нужно также автоматически развернуть прием имен на стороне веб-сервера, чтобы ваш веб-сервер распознал конкретное доменное имя клиента и затем предоставил нужное содержимое. Чтобы усложнить эту задачу, при условии, что вы поддерживаете https (а так и должно быть), вам также нужно будет сгенерировать соответствующий TLS-сертификат и развернуть его. В случае №1 вы можете сделать это самостоятельно, возможно, с помощью TLS-сертификата на основе дикой карты (обслуживая все, что имеет *.website.io). В случае №2 все немного сложнее, поскольку вам нужно, чтобы клиент правильно установил записи адресов CNAME или A/AAAA на ваш сервер, а затем сгенерировал сертификат (скорее всего, с помощью letsencrypt или аналогичного средства).
Этого достаточно, чтобы начать, и вряд ли это полное решение, поскольку ваш проект не является незначительным, чтобы дать полный и исчерпывающий ответ на многие страницы текста.