Что нужно сделать, чтобы настроить субдомен для пользователей, когда они регистрируются на моем сайте.
Какая инфраструктура требуется? Я использую серверы Linux.
Что нужно сделать, чтобы настроить субдомен для пользователей, когда они регистрируются на моем сайте.
Какая инфраструктура требуется? Я использую серверы Linux.
Вы можете сделать запись CNAME/запись A в настройках DNS для каждого поддомена.
Запись CNAME — это запись в настройках управления вашим доменом, которая позволяет вам управлять субдоменом вашего домена.
Для автоматизации наряду с регистрацией вы можете написать скрипт, который выполняется для каждого пользователя, когда он/она регистрируется.
Вы также можете обратиться к этой ссылке для пошагового процесса для Apache:
Как настроить субдомены в apache
(поскольку вы упомянули Linux, я предполагаю, что это должен быть APache. Пожалуйста, укажите, если это не так)
Альтернативное решение
Вы также можете обратиться к решению с подстановочными знаками, предоставленному Alnitak , в той же теме. Я считаю, что это более простой способ. :)
Вы можете использовать определенную запись DNS (CNAME
или A
/AAAA
) для каждого известного поддомена или запись DNS с подстановочными знаками, которая будет принимать *.example.com:
$ORIGIN example.com
foo IN A 12.34.6.78
bar IN A 12.34.6.78
or
$ORIGIN example.com
* IN A 12.34.6.78
Преимущество последнего заключается в том, что после запуска службы не требуется никаких изменений в конфигурации DNS или Apache. Недостатком является то, что все такие поиски по подстановочным знакам должны (по определению) возвращать один и тот же IP-адрес.
Конфигурация Apache будет зависеть от ваших требований, как для контроля конечных пользователей, так и для безопасности. Обратите внимание, что если у пользователей есть разрешение на запуск CGI-скриптов на сервере, потребуется дополнительная настройка для обеспечения безопасности.
В зависимости от того, является ли содержимое статическим или динамическим, это также повлияет на вашу конфигурацию:
Используйте mod_vhost_alias
для сопоставления отдельных виртуальных хостов с их отдельными каталогами на сервере.
Если вы действительно хотите, создайте отдельный раздел <VirtualHost>
для каждого известного сайта, но тогда вам придется перезапускать Apache каждый раз, когда регистрируется новый пользователь.
Используйте один <VirtualHost>
, а затем просмотрите часть имени хоста запрошенного URL-адреса (из переменной среды $SERVER_NAME
) в сценариях, которые отображают выходные данные, чтобы выяснить, какой контент пользователя отображать.
Инфраструктура включает доступ к DNS-серверу для добавления записи с подстановочными знаками и перезаписи правил в Apache.
Попробуйте эти ответы:
или эта ссылка:
Если вы используете сервер Linux, я предполагаю, что вы используете Apache в качестве веб-сервера.
Вам нужно будет настроить правильную DNS-маршрутизацию для поддомена, а также для виртуального хоста.
Виртуальные хосты довольно просты в настройке, но я не уверен, насколько легко это сделать на лету программно.
В большинстве случаев это так же просто, как отредактировать файл конфигурации apache и добавить следующее:
Port 80
ServerName www.mydomain.com
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /www/user-bob
ServerName bob.mydomain.com
...
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /www/user-sally
ServerName sally.mydomain.com
...
</VirtualHost>
Документация по VirtualHost, вероятно, будет вам полезна.
Apache позволяет указать любое количество «сайтов» на основе субдоменов на одном сервере. Создание нового файла «определения сайта» с соответствующей информацией о субдомене вместе с правильными подстановочными знаками DNS сделает то, что вы хотите.
Другими словами, процесс выглядит следующим образом:
ВАЖНО Это основано на конфигурации Apache в стиле Debian, где файлы конфигурации включены в каталог, а основная конфигурация считывает все файлы конфигурации в этом каталоге. Это значительно упростит работу, поскольку добавление/удаление поддоменов будет означать добавление/удаление файлов, а не редактирование одного файла, и поэтому процесс будет намного проще автоматизировать.