Здравствуйте. Сам я пока новичок в PHP, но немного осваиваюсь. Вопрос, который хотел бы задать, охватывает сразу несколько тем на этом форуме, поэтому я выбрал тему наиболее непонятного для меня вопроса.
Существует довольно большое количество сайтов, после регистрации на которых вы можете получить собственный поддомен. Ну, например, LiveJournal или bestpersons.
Как можно реализовать подобное?
Очевидно, что нужен свой выделенный сервер, хотя бы виртуальный.
Сам я предполагаю такой выход: со всех поддоменов сайта example.com (то есть с 1.example.com, vasya.example.com, petya.example.com и пр.) идёт перенаправление на один и тот же IP-адрес. Как следует сконфигурировать сервер доменных имен (например, named) на сервере для этого?
Затем веб-сервер будет получать от браузера значение запрашиваемого домена (например, vasya.example.com), а движок сайта выводить нужную страницу. Напомните, пожалуйста, как называется переменная запрашиваемого браузером клиента доменного имени в PHP?
Подскажите, как следует настроить Apache, просто listen ip:port? Если я предпочту связку nginx + Apache, то как их нужно настроить? Лучше ли будет вариант nginx + php-fpm + eaccelerator?
Вопрос усложняется, если на поддомене pic.example.com и static.example.com должен храниться статичный контент. То есть их точно придётся раздавать посредством nginx.
Вообще, осуществимо ли это на PHP? Насколько можно судить по социальной сети «ВКонтакте» — вполне, там пользовательские автоподдомены функционируют. Но может, мне стоит выбрать иной язык для реализации подобного?
(Разумеется, я понимаю, что задаю слишком много вопросов, и, возможно, желание отвечать на такую кучу просто улетучивается, но, думаю, и посетителям форума такая теория будет полезна.)
1. perseydoft - 24 Июня, 2010 - 14:36:34 - перейти к сообщению
2. JustUserR - 24 Июня, 2010 - 16:08:53 - перейти к сообщению
perseydoft пишет:
Реализовать систему пользовательских субдоменов можно различными средставми - в зависимости от этого домены могут быть реальными или виртуальными - хотя в любом случае это будет некоторый обработчик виртуального хостаКак можно реализовать подобное?
Очевидно, что нужен свой выделенный сервер, хотя бы виртуальный
Очевидно, что нужен свой выделенный сервер, хотя бы виртуальный
В самом простом случае вы делаете перенаправление всех доменов *.domain.ru кроме ваших служебных субдоменов - на специальный виртуальный хост в котором располагатся CGI-скрипт и выполняет определенные дейтсвия То есть соответствюущих виртуальных хостов у пользователей на самом деле нет - но CGI-скрипт за счет HTTP-переменных окружения HTTP_HOST выполняет требуемую эмуляцию
Можно реализовать и реальную систему субдоменов для пользователей - для этого потребуется динамическое изменение httpd.conf или специальные модули для поточного создания виртуальных хостов
Конечно же для всего вышеуказанного требуется чтобы DNS-сервер обрабатывал все возможные запросы на ваш домен - и переадресовывал их на соответствующий IP-адрес вашего web-сервера