Как заставить пользователей указывать доменное имя на своих профилях на моем сайте - PullRequest
2 голосов
/ 05 сентября 2010

Я хочу реализовать что-то вроде Tumblr или Wordpress, предоставив пользователю возможность указывать свое доменное имя в своих профилях.В случаях, когда пользователь обращается к своему регистратору домена и IP-адресу моего сервера, тогда: www.usersdomain.com будет указывать на www.mysite.com/userid без фактической переадресации, так что имя домена будет по-прежнему отображаться в адресной строке.

Хотелось бы, чтобы вы описали детали шагов для этого.

Я использую Ruby on Rails, если это поможет.В моей производственной среде есть Nginx и Passenger.

1 Ответ

3 голосов
/ 05 сентября 2010

Моя точка зрения:

  1. Пользователи меняют записи DNS своих сайтов, чтобы они указывали на IP-адрес вашего сервера. После этой операции каждый HTTP-запрос к их доменам будет «перехватываться» вашим IP-адресом и вашим приложением (однако вы должны перенастроить HTTP-сервер).
  2. Каждый HTTP-запрос содержит заголовок Host. Этот заголовок позволяет нам создать виртуальный хостинг: многие и многие хосты могут указывать только на один IP;
  3. В вашем приложении просто извлеките Host из запроса и запросите в вашей базе данных пользователя с таким хостом.
  4. Сбросить содержимое его страницы и все.

Например, 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

И я вижу свою собственную страницу в вашем сервисе на моем домене.

...