V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lHUAC
V2EX  ›  DNS

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

  •  
  •   lHUAC · 2016-07-01 23:33:35 +08:00 · 10859 次点击
    这是一个创建于 3085 天前的主题,其中的信息可能已经有所发展或是发生改变。
    按理来说,应该 是 DNS 做跳转要比服务器高效吧?
    例如:
    使用 DNS 跳转(从 x.com 跳转到 www.x.com
    1 )客户端》 DNS 》 301 》 DNS 》目标
    使用 服务器 跳转(从 x.com 跳转到 www.x.com
    2 )客户端》 DNS 》服务器》 301 》 DNS 》目标
    19 条回复    2016-07-05 17:05:51 +08:00
    mrjoel
        1
    mrjoel  
       2016-07-01 23:44:09 +08:00
    DNS 跳转? url 转发 还是 CNAME
    Zohar
        2
    Zohar  
       2016-07-01 23:44:58 +08:00 via Android   ❤️ 1
    301 是一种 HTTP 状态码,和 DNS 没关系。
    mornlight
        3
    mornlight  
       2016-07-01 23:48:23 +08:00   ❤️ 1
    DNS 协议里本身没有 301 跳转,你见到某些 DNS 提供商可以设置也是解析到他们的服务器,再 301
    metowolf
        4
    metowolf  
       2016-07-01 23:48:37 +08:00   ❤️ 1
    标准 DNS 没有跳转的,大多数都是通过解析到 DNS 提供商的专用服务器后进行跳转
    lHUAC
        5
    lHUAC  
    OP
       2016-07-01 23:49:20 +08:00
    @mrjoel url 转发(我理解没错吧?),即从主域跳转到带 www 的
    lHUAC
        6
    lHUAC  
    OP
       2016-07-01 23:50:28 +08:00
    @metowolf
    @mornlight 这样的话,本身和解析到自己的服务器再跳转没有区别了对吗?
    metowolf
        7
    metowolf  
       2016-07-01 23:55:56 +08:00
    @lHUAC 没有区别,我都是交给 DNS 去解析,减少压力
    DoraJDJ
        8
    DoraJDJ  
       2016-07-02 00:04:25 +08:00 via Android
    @metowolf 另外使用第三方静态页面托管服务的时候,用 DNS 的 301 跳转很有用
    lHUAC
        9
    lHUAC  
    OP
       2016-07-02 00:21:29 +08:00
    @metowolf 对呀,这样就把请求放到 DNS 那边的服务器上了:)
    mrjoel
        10
    mrjoel  
       2016-07-02 00:37:48 +08:00   ❤️ 1
    关于裸域 @到 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
        11
    lHUAC  
    OP
       2016-07-02 01:15:50 +08:00
    @mrjoel cloudxns 301 跳转可以把请求目录带上比如 x.com/test 跳转到 www.x.com/test ,但是这个请求也是打到 DNS 那边服务器上面去,如果 DNS 转发服务器慢,这就会慢了下来,所以,你的建议还是使用自己的服务器来跳转么?
    mytsing520
        12
    mytsing520  
       2016-07-02 02:38:07 +08:00   ❤️ 1
    @mrjoel
    @lHUAC
    DNSPod 这类服务商操作 URL 跳转,从你的操作来看是 URL 跳转这个类型,然而实际上 DNS 协议里是没有这个类型的, DNSPod 这类服务商专门开辟了一台服务器用于接收当用户使用 URL 跳转这个类型时,域名进行 A 记录解析至跳转服务器。换句话说,你用的 URL 跳转,实际上依然是一个 A 记录或 CNAME 记录(因为主机头记录不能支持 CNAME 记录是国际惯例)。
    ZE3kr
        13
    ZE3kr  
       2016-07-02 07:29:51 +08:00 via iPhone   ❤️ 1
    用 DNS 跳转和常规的 A 解析跳转原理一样,不会更快。

    试试 CloudFlare 的 Page Rules 吧, CloudFlare 支持免费的 HTTPS 。
    notgod
        14
    notgod  
       2016-07-02 09:00:43 +08:00   ❤️ 2
    按理来说,应该 是 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
        15
    dndx  
       2016-07-02 10:48:57 +08:00 via iPhone   ❤️ 1
    301 跳转跟 DNS 协议一点关系也没有。只是 DNS 服务商提供的一种服务。
    CinderellaCiCi
        16
    CinderellaCiCi  
       2016-07-04 12:28:12 +08:00 via Android
    为什么都在谈论 dns 的转发实现原理?看标题,楼主是想要推荐的 dns 呀…
    CloudXNS 的 301 转发是由国内的机器提供服务,因此相对会比较稳定,不过要求备案。
    另外,对于 @mrjoel 提到的 x.com/aaa 这样的 URL 跳转到 www ,在 CloudXNS 中是支持的,只需要将记录值填写为 http://www.x.com/$uri 即可。
    楼主如果已备案可以考虑 CloudXNS~
    lHUAC
        17
    lHUAC  
    OP
       2016-07-04 13:27:46 +08:00
    @CinderellaCiCi 哈哈你这是强行推广呀:)我去年就开始一直都是在用 CloudXNS 了,对了,量子加速什么时候能出来呀?流量几毛钱 1G ? HTTP/2 , SPDY/3 必须要支持吧? ALPN 呢
    CinderellaCiCi
        18
    CinderellaCiCi  
       2016-07-05 10:52:26 +08:00
    @lHUAC 量子加速快了,价格暂不公开,以后可能会推出流量包。 HTTP/2 那些东西暂时还没支持。
    txydhr
        19
    txydhr  
       2016-07-05 17:05:51 +08:00 via iPad
    @metowolf
    @lHUAC 有区别 dns 服务商的巨烂 国外访问根本直接 time out
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5102 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 08:37 · PVG 16:37 · LAX 00:37 · JFK 03:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.