我想通过为用户提供将其域名指向其个人资料的选项来实现类似 Tumblr 或 Wordpress 的功能。例如,用户转到他们的域名注册商和我的服务器的 IP,那么:www.usersdomain.com 将指向 www.mysite.com/userid 而无需实际转发,以便域名仍会显示在地址栏中。
我希望您能够描述执行此操作的步骤的详细信息。
如果有什么区别的话,我正在使用 Ruby on Rails。我的生产环境有Nginx和Passenger。
最佳答案
我的观点:
- 用户更改其网站的 DNS 记录以指向您服务器的 IP 地址。执行此操作后,对其域的每个 HTTP 请求都将被您的 IP 地址和应用程序“捕获”(但是,您应该重新配置您的 HTTP 服务器)。
- 每个 HTTP 请求都包含
Host
header 。该 header 允许我们进行虚拟主机之类的事情:许多主机只能指向一个 IP; - 在您的应用程序中,只需从请求中提取
Host
并在数据库中查询具有此类主机的用户。 - 刷新页面内容即可。
例如,您的服务IP是100.100.100.100,我的域名是redsocks.com。我需要更改我的域的 DNS(A 记录)以指向您的 IP。据说,我做到了。
当我将浏览器指向我的域时,浏览器会向您自己的 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
我在我的域上的您的服务中看到了我自己的页面。
关于ruby-on-rails - 如何让用户的域名指向他们在我网站中的个人资料,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3645512/