ruby-on-rails - 如何让用户的域名指向他们在我网站中的个人资料

标签 ruby-on-rails dns appdomain

我想通过为用户提供将其域名指向其个人资料的选项来实现类似 Tumblr 或 Wordpress 的功能。例如,用户转到他们的域名注册商和我的服务器的 IP,那么:www.usersdomain.com 将指向 www.mysite.com/userid 而无需实际转发,以便域名仍会显示在地址栏中。

我希望您能够描述执行此操作的步骤的详细信息。

如果有什么区别的话,我正在使用 Ruby on Rails。我的生产环境有Nginx和Passenger。

最佳答案

我的观点:

  1. 用户更改其网站的 DNS 记录以指向您服务器的 IP 地址。执行此操作后,对其域的每个 HTTP 请求都将被您的 IP 地址和应用程序“捕获”(但是,您应该重新配置您的 HTTP 服务器)。
  2. 每个 HTTP 请求都包含 Host header 。该 header 允许我们进行虚拟主机之类的事情:许多主机只能指向一个 IP;
  3. 在您的应用程序中,只需从请求中提取 Host 并在数据库中查询具有此类主机的用户。
  4. 刷新页面内容即可。

例如,您的服务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/

相关文章:

mysql - 使用 structure.sql 而不是 schema.rb 为 MySQL 配置公寓 gem 以创建新租户

linux - DNS Apache 重定向到别处持有的域名

android - 为什么我的 Android 手机通过未知服务器发送数据?

c# - 每个 C# 程序都有一个 AppDomain 吗?

c# - 如何从 Web API 应用程序的 Bin 目录访问 Xml 文件?

ruby-on-rails - 由于 `require' : cannot load such file -- bcrypt_ext (LoadError),Rails 服务器无法启动

ruby-on-rails - Case 语句在 erb 部分中不起作用

ruby-on-rails - 如何在启用 SSL 的 Rails 应用程序中的单个 Rack::Proxy 请求中禁用 SSL?

wordpress - 如何从指向由 google app engine 托管的应用程序的域托管 wordpress 博客?

c# - Mef:尝试从另一个应用程序域加载ApiController时,“无法序列化”