Моя точка зрения:
- Пользователи меняют записи DNS своих сайтов, чтобы они указывали на IP-адрес вашего сервера. После этой операции каждый HTTP-запрос к их доменам будет «перехватываться» вашим IP-адресом и вашим приложением (однако вы должны перенастроить HTTP-сервер).
- Каждый HTTP-запрос содержит заголовок
Host
. Этот заголовок позволяет нам создать виртуальный хостинг: многие и многие хосты могут указывать только на один IP;
- В вашем приложении просто извлеките
Host
из запроса и запросите в вашей базе данных пользователя с таким хостом.
- Сбросить содержимое его страницы и все.
Например, IP вашего сервиса: 100.100.100.100 , мой домен - redsocks.com . Мне нужно изменить DNS (запись A) моего домена, чтобы он указывал на ваш IP. Предположительно, я сделал.
Когда я указываю свой браузер на мой домен, браузер делает следующий запрос (или аналогичный) на ваш собственный IP, а не мой :
GET / HTTP/1.1
Host: redsocks.com
...
Ваше приложение имеет код (псевдокод), который относится к моему запросу:
user = User.find_by_domain(REQUEST["Host"])
if user == nil
render_not_found_page
else
contents = Content.get_contents_of_user(user)
render_contents_of_user contents
end
И я вижу свою собственную страницу в вашем сервисе на моем домене.