Ruby on rails 在Saas应用程序中,自定义域如何处理路由、链接和重定向?

Ruby on rails 在Saas应用程序中,自定义域如何处理路由、链接和重定向?,ruby-on-rails,dns,multi-tenant,saas,cname,Ruby On Rails,Dns,Multi Tenant,Saas,Cname,我明白,如果我希望客户能够使用指向其customer.mysasaapp.com空间的自定义域,他们必须定义一个CNAME记录,该记录为规范的customer.mysaapp.com域别名 我不明白的是,这个别名如何在请求之间持续存在。例如,如果客户站点链接到其资源,它如何知道是否链接到customer.mysasaapp.com/videos域与customclientdomain.com/videos资源?我不希望真正的子域在单击链接后立即显示在导航栏中。这是怎么处理的?让我试着给你解释一下

我明白,如果我希望客户能够使用指向其
customer.mysasaapp.com
空间的自定义域,他们必须定义一个CNAME记录,该记录为规范的
customer.mysaapp.com
域别名


我不明白的是,这个别名如何在请求之间持续存在。例如,如果客户站点链接到其资源,它如何知道是否链接到
customer.mysasaapp.com/videos
域与
customclientdomain.com/videos
资源?我不希望真正的子域在单击链接后立即显示在导航栏中。这是怎么处理的?

让我试着给你解释一下。正如您已经知道的,CNAME是另一个域的规范名称

正如你们所知,当我们在浏览器地址栏中点击一个域时。浏览器询问DNS(域名服务器)将请求发送到何处。DNS匹配域名并将IP地址发送回浏览器,浏览器点击这些IP地址以获得响应。 但当我们希望从同一IP地址为多个站点提供服务时,SAAS应用程序就是这样。我们可以为每个客户端定义CNAME。这是IP映射的替代方案

因此,当浏览器向DNS询问所提供主机url的地址时。DNS发回实际的域名/路径,告诉浏览器它是正确的地址

所以现在浏览器将请求发送到场景后面的实际域,并将主机头设置为用户输入的提供地址。(customclientdomain.com/videos适用于您的案例)

现在,服务器知道用户提供了哪个主机,并做出相应的响应

从下一个请求开始,浏览器就发挥了神奇的作用,给你一个全新网站的模拟

所有的现代浏览器,包括WGET、CURL,都可以处理这个问题


是一个包含更多详细信息的链接。

谢谢,我相信我现在明白了。我假设DNS关注点与web浏览器关注点完全分离。浏览器这样运行多长时间?直到有什么东西打破了在请求和响应中来回传递主机头的循环,浏览器才会这样做。因为浏览器遵循完全相同的规则。它确实需要有关地址的DNS,并按照前面提到的步骤进行操作。(只有当服务器显式重定向到新主机或用户自己进入另一个域时,才能执行此操作)。把它看成2个单独的网站。因此,除非您自己切换网站,否则浏览器不会自动切换网站,或者网站的服务器会将浏览器发送到另一个网站(例如,如果您在stackoverflow上,则不会自动转到其他网站)