使用 DNS 做 301 域名跳转和服务器跳转哪个好?

2016-07-01 23:33:35 +08:00
 lHUAC
按理来说,应该 是 DNS 做跳转要比服务器高效吧?
例如:
使用 DNS 跳转(从 x.com 跳转到 www.x.com
1 )客户端》 DNS 》 301 》 DNS 》目标
使用 服务器 跳转(从 x.com 跳转到 www.x.com
2 )客户端》 DNS 》服务器》 301 》 DNS 》目标
10832 次点击
所在节点    DNS
19 条回复
mrjoel
2016-07-01 23:44:09 +08:00
DNS 跳转? url 转发 还是 CNAME
Zohar
2016-07-01 23:44:58 +08:00
301 是一种 HTTP 状态码,和 DNS 没关系。
mornlight
2016-07-01 23:48:23 +08:00
DNS 协议里本身没有 301 跳转,你见到某些 DNS 提供商可以设置也是解析到他们的服务器,再 301
metowolf
2016-07-01 23:48:37 +08:00
标准 DNS 没有跳转的,大多数都是通过解析到 DNS 提供商的专用服务器后进行跳转
lHUAC
2016-07-01 23:49:20 +08:00
@mrjoel url 转发(我理解没错吧?),即从主域跳转到带 www 的
lHUAC
2016-07-01 23:50:28 +08:00
@metowolf
@mornlight 这样的话,本身和解析到自己的服务器再跳转没有区别了对吗?
metowolf
2016-07-01 23:55:56 +08:00
@lHUAC 没有区别,我都是交给 DNS 去解析,减少压力
DoraJDJ
2016-07-02 00:04:25 +08:00
@metowolf 另外使用第三方静态页面托管服务的时候,用 DNS 的 301 跳转很有用
lHUAC
2016-07-02 00:21:29 +08:00
@metowolf 对呀,这样就把请求放到 DNS 那边的服务器上了:)
mrjoel
2016-07-02 00:37:48 +08:00
关于裸域 @到 www ,写详细点吧:
1 、 url 跳转把 xxx.com 解析到 www.xxx.com ,由 @跳转到 www 的负担交给 DNS 服务商的服务器,当然跳转的速度也取决于 DNS 服务商的服务器。比如现在 DNSPOD 的 url 跳转服务器就很慢。 这样跳转问题是只对首页(或某一固定链接)有效,如果用户直接输入了 xxx.com/aaa 这样的裸域 url 来访问随机二级目录就会失败,所以你仍然需要把裸域 @解析到自己的服务器。(治标不治本,貌似现在部分浏览器对 xxx.com/aaa 找不到的情况 会自动补全到 www.xxx.com/aaa

2 、 301 、 302 跳转,即在你自己的服务器软件(比如 nignx )上设置,这样的好处是,不管用户访问裸域 @还是 www ,都可以正常做出回应。当然负担也在你自己服务器上,这个负担应该不大。(所以能采用这个方法还是这个方法吧,虚拟机那也只能 url 了)
lHUAC
2016-07-02 01:15:50 +08:00
@mrjoel cloudxns 301 跳转可以把请求目录带上比如 x.com/test 跳转到 www.x.com/test ,但是这个请求也是打到 DNS 那边服务器上面去,如果 DNS 转发服务器慢,这就会慢了下来,所以,你的建议还是使用自己的服务器来跳转么?
mytsing520
2016-07-02 02:38:07 +08:00
@mrjoel
@lHUAC
DNSPod 这类服务商操作 URL 跳转,从你的操作来看是 URL 跳转这个类型,然而实际上 DNS 协议里是没有这个类型的, DNSPod 这类服务商专门开辟了一台服务器用于接收当用户使用 URL 跳转这个类型时,域名进行 A 记录解析至跳转服务器。换句话说,你用的 URL 跳转,实际上依然是一个 A 记录或 CNAME 记录(因为主机头记录不能支持 CNAME 记录是国际惯例)。
ZE3kr
2016-07-02 07:29:51 +08:00
用 DNS 跳转和常规的 A 解析跳转原理一样,不会更快。

试试 CloudFlare 的 Page Rules 吧, CloudFlare 支持免费的 HTTPS 。
notgod
2016-07-02 09:00:43 +08:00
按理来说,应该 是 DNS 做跳转要比服务器高效吧?
例如:
使用 DNS 跳转(从 x.com 跳转到 www.x.com
1 )客户端》 DNS 》 301 》 DNS 》目标
使用 服务器 跳转(从 x.com 跳转到 www.x.com
2 )客户端》 DNS 》服务器》 301 》 DNS 》目标

1 和 2 其实是一样
不同的地方
1 是使用 DNS 解析服务商的服务器
2 是使用你自己的服务器

按你的要求
xxx.com 转到 www.xxx.com

Apache 使用.htaccess (支持 HTTP 和 HTTPS )
RewriteEngine On
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ - [env=protocol:https]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ - [env=protocol:http]
RewriteCond %{HTTP_HOST} ^xxx.com [NC]
RewriteRule ^(.*)$ http://www.xxx.com/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^xxx.com$ [NC]
RewriteRule ^(.*)$ %{ENV:protocol}://www.xxx.com/$1 [L,R=301]
改为你的域名 上传到网站根目录 .htaccess 即可 如果 Win 系统 不支持.htaccess 这种文件名文件
可以保存为 htaccess.txt FTP 上传后修改即可

nginx 可以这样做
单域名
server {
server_name xxx.com;
return 301 $scheme://www.xxx.com$request_uri;
}
正则匹配到不带 www 的 强制转向所有域名
server {
server_name "~^(?!www\.).*" ;
return 301 $scheme://www.$host$request_uri;
}


DNS 的标准解析协议 并没 301/302 redirect 这种解析标准
DNS 服务商提供给你的转向服务
是在 你的 DNS 记录 加一条 A 记录 @ A 1.1.1.1
只是这个记录你看不到 这个 1.1.1.1
就是 DNS 服务商的服务器 IP 你域名解析过去了 他在服务器处理 抓取你设置的转向地址

301 转向
server {
server_name 你的域名;
return 301 转向地址$request_uri;
}

302 转向
server {
server_name 你的域名;
return 302 转向地址$request_uri;
}

可以添加 log 或者 track 做请求的统计分析 知道转发请求了多少什么的
dndx
2016-07-02 10:48:57 +08:00
301 跳转跟 DNS 协议一点关系也没有。只是 DNS 服务商提供的一种服务。
CinderellaCiCi
2016-07-04 12:28:12 +08:00
为什么都在谈论 dns 的转发实现原理?看标题,楼主是想要推荐的 dns 呀…
CloudXNS 的 301 转发是由国内的机器提供服务,因此相对会比较稳定,不过要求备案。
另外,对于 @mrjoel 提到的 x.com/aaa 这样的 URL 跳转到 www ,在 CloudXNS 中是支持的,只需要将记录值填写为 http://www.x.com/$uri 即可。
楼主如果已备案可以考虑 CloudXNS~
lHUAC
2016-07-04 13:27:46 +08:00
@CinderellaCiCi 哈哈你这是强行推广呀:)我去年就开始一直都是在用 CloudXNS 了,对了,量子加速什么时候能出来呀?流量几毛钱 1G ? HTTP/2 , SPDY/3 必须要支持吧? ALPN 呢
CinderellaCiCi
2016-07-05 10:52:26 +08:00
@lHUAC 量子加速快了,价格暂不公开,以后可能会推出流量包。 HTTP/2 那些东西暂时还没支持。
txydhr
2016-07-05 17:05:51 +08:00
@metowolf
@lHUAC 有区别 dns 服务商的巨烂 国外访问根本直接 time out

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/289721

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX