Как указать внешний домен для поддомена?

Как указать внешний домен для поддомена?

У меня есть домен example.com, и я настроил сервер Ubuntu Apache таким образом, что он указывает любому поддомену на каталог с тем же именем.

<VirtualHost *:80>
    ServerAlias *.example.com
    VirtualDocumentRoot /var/www/html/%1
</VirtualHost>

Поэтому subdomain.example.comукажем на example.com/subdomain.

Я пытаюсь разрешить пользователям указывать свой собственный домен на поддомен по их выбору. Как я могу этого добиться, какие записи для этого потребуются и что нужно будет сделать для этого?Виртуальный Хост?

Я попробовал следующую запись:

  • sampledomain.example(CNAMEзапись) - @-->sample.example.com
  • sampledomain.example запись) - @--> ( IPАдрес example.com)

Я также пробовал использовать wwwCNAME вместе с удалением A record.

sample.example.comуспешно указывает на example.com/sample. Однако sampledomain.exampleпо какой-то причине действует как корневой сайт.

Поэтому, если я посещу sampledomain.example/sample, я получу содержимое, example.com/sampleа не укажу на sample.example.com.

Как мне с этим разобраться? Какие записи понадобятся и что можно сделать с виртуальным хостом?

Я использовал запись CNAME, чтобы иметь возможность извлекать пользовательское доменное имя через PHP, когда пользователь посещает его. Требуется ли запись CNAME?

решение1

Если вы согласны делать это вручную по запросу вашего клиента, это просто. Все, что вам нужно сделать, это добавить ServerAlias sampledomain.comв конфигурацию vhost и перезагрузить конфигурацию веб-сервера.

Однако, если вы хотите, чтобы ваши клиенты делали это сами в каком-то интерфейсе управления клиентами, это не так-то просто сделать из-за того, как работают виртуальные хосты на веб-сервере. Вот почему:

Если у вас есть какая-либо запись DNS (независимо от того, Aили CNAME), сопоставленная sampledomain.comс вашим веб-сервером, браузер отправит запрос на IP-адрес вашего сервера с Hostзаголовком HTTP, установленным на sampledomain.com. Веб-сервер будет использовать этот заголовок, чтобы решить, какой виртуальный хост должен это обрабатывать, и если sampledomain.comэто не имя vhost или псевдоним, на запрос ответит vhost по умолчанию, как вы уже видели.

Чтобы сделать это возможным, вам нужен способ для ваших клиентов настраивать псевдонимы для их vhost. С Apache это нелегко, но в теории вы можете прочитать это из базы данных, как объясненоздесь(Я никогда этого не пробовал, поэтому понятия не имею, работает ли это).

Также, такие вещи какVirtualMinможет быть полезным в таком случае.

Связанный контент