Динамическая маршрутизация поддоменов с NextJS

Как может быть реализована функция динамической маршрутизации субдомена в NextJS?

Пример: если пользователь приходит с именем пользователя abc на сайте xyz, то он может получить доступ к своему сайту на abc.xyz.com

Кроме того, если у пользователя есть домен abc.com, он может указать abc.com на abc.xyz.com. Так что в будущем, если кто-то откроет abc.com, будет обслуживаться abc.xyz.com. И в URL также отображается abc.com.

Я исследовал несколько плагинов в NPM, таких как vhost и wildcard-subdomains, но не уверен, что это правильный способ решить эту проблему.

Vhost требует изменений в системе hosts в локальной системе, а поддомен с подстановочными знаками решает проблему исключительно с помощью маршрутизации.

Настройка локальной системы Я настроил Server.js с кодом, который работает временно, но, похоже, не является решением, которое можно использовать в производстве:

Server.js

  ...
    if (pathname === "/demo.demo.com") {
          app.render(req, res, "/demo.demo.com", query);
    }
    ...

И в _app.js

static async getInitialProps(appArgument) {
   ...
    return {
      ...
      renderFrom: "demo.demo.com"
    };
  }

Также в моем хосте demo.demo.com указывает на localhost.

Сайт работает для меня в demo.demo.com:3000, но как обобщить его в производственных сценариях с базой данных и CNAME записями и добавить / изменить запись CNAME автоматически с помощью действий пользователя.


person Ajay    schedule 26.06.2020    source источник
comment
Я не понимаю, как next.js может быть связан с автоматическим изменением или добавлением записи CNAME.   -  person Nico    schedule 26.06.2020
comment
Чтобы выполнить вышеуказанное решение, нам нужно добавить хост в локальную систему. Эквивалент хоста в локальной системе в Интернете - это запись CNAME.   -  person Ajay    schedule 26.06.2020
comment
Да, я знаю, но next.js не предназначен для таких вещей   -  person Nico    schedule 26.06.2020
comment
@Nico: Вы имеете в виду, что динамическую маршрутизацию поддоменов нельзя выполнить с помощью NextJS, поскольку я использую NextJS для своего приложения, и это является обязательным требованием. Решение работает, но как правильно сделать его общим для БД и сервера.   -  person Ajay    schedule 26.06.2020


Ответы (1)


На Vercel (создатели Next.js) мы поддерживаем Домены с подстановочными знаками прямо из коробки. Затем в Next.js вам нужно только прочитать домен из заголовков входящего запроса, проанализировать его и затем ответить правильным контентом.

Надеюсь, это было полезно!

person Leonard Lamprecht    schedule 19.10.2020
comment
Нет другого способа сделать это? Я пишу собственный сервер. - person Paschal; 07.05.2021