Dns Tumblr如何实现自定义域映射?
我到处搜索,但找不到明确的答案,甚至找不到描述公司如何将自定义域映射到其应用程序的工程博客帖子 例如,假设我有一个Tumblr页面,其URL为www.ashley.Tumblr.com。该网站允许您添加自定义域,以便访问www.Ashley.com将呈现www.Ashley.tumblr.com,并完全支持其他页面和目录Dns Tumblr如何实现自定义域映射?,dns,masking,cname,Dns,Masking,Cname,我到处搜索,但找不到明确的答案,甚至找不到描述公司如何将自定义域映射到其应用程序的工程博客帖子 例如,假设我有一个Tumblr页面,其URL为www.ashley.Tumblr.com。该网站允许您添加自定义域,以便访问www.Ashley.com将呈现www.Ashley.tumblr.com,并完全支持其他页面和目录 开发这个的技术名称是什么 他们所做的事情没有一个单一的名称-这就是设计他们的HTTP/web服务器代码来处理来自任意HTTP请求主机:头的请求,并将它们映射到他们现有的Tumb
开发这个的技术名称是什么 他们所做的事情没有一个单一的名称-这就是设计他们的HTTP/web服务器代码来处理来自任意HTTP请求
主机:
头的请求,并将它们映射到他们现有的Tumblr帐户。它与DNS无关,只是要求自定义域名的所有者更改其a
、AAAA
、或CNAME
记录以指向与非自定义域相同的主机(为了保证这种情况发生,通常会将非自定义域的自定义域名设置为CNAME
,以防非自定义域的IP地址发生更改)
公开时间!大多数传统web服务器(Apache、IIS)都是围绕“网站”的概念构建的:一个物理目录,映射到与HTTP主机:
头值(或某些通配符匹配模式)预定义列表相对应的请求以及协议和端口绑定。例如,您可以添加一个名为“MyWebsite.com”(网站名称)的条目,该条目接受对MyWebsite.com
和www.MyWebsite.com
(因为这是两个不同的主机:
头值)的请求,还可以添加更多的条目,比如secure.MyWebsite.com
在端口443上使用HTTPS)
更现代的轻量级web服务器和反向代理(如nginx和Node.js的Express)省去了物理目录映射,让应用程序代码完全决定如何在应用程序逻辑中路由请求(这是web应用程序术语中的“路由器”和/或“解复用器”(demux)所做的)-这是以需要自己处理所有逻辑为代价的(公平地说,这些web服务器配备了必要的工具,可以像旧的传统web服务器一样轻松配置它们,这不是默认设置)
…但优点是你可以让它完全按照你的意愿工作
在伪代码中,他们的程序可能如下所示:
void handleRequest(Request request) {
String hostHeader = request.getHeader("Host")
RegexMatch nonCustomDomainMatch = hostHeader.match( "([^\.]+).tumblr.com" )
if nonCustomDomainMatch.success {
String accountName = nonCustomDomainMatch.groups[0]
showAccount( accountName )
}
else {
// Look up the custom domain name in a database or other mutable data store:
String accountName = db.execQuery( "SELECT accountName FROM accounts WHERE accounts.customDomainName = @cdn", new { cdn: hostHeader } )
if accountName == null {
showHttp404Error()
}
else {
showAccount( accountName )
}
}
}
事实上,考虑到它们的大小和规模,可能是硬件负载平衡器或其他轻量级前端服务中的一些自定义逻辑,并且总是使用积极的缓存(数据库查找非常昂贵!)。非常感谢您花时间响应。你为我指明了正确的方向,我还有很多要学的!附言:这是一个伟大的博览会。