V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
lovine
V2EX  ›  问与答

nginx 重定向 和 dnspod 解析的疑惑

  •  
  •   lovine · 2014-09-16 20:47:19 +08:00 · 5458 次点击
    这是一个创建于 3516 天前的主题,其中的信息可能已经有所发展或是发生改变。
    关于访问name.com打开www.name.com的疑惑
    nginx反代 301重定向域名 name.com到www.name.com

    和直接在dnspod @解析到服务器 然后虚拟主机 server_name 加上name.com


    这都可以 达到正常访问同一个网站的目录

    哪种好呢 好像很多人用反代解决? 直接dnspod解析的坏处是?
    20 条回复    2014-09-17 19:08:32 +08:00
    Lax
        1
    Lax  
       2014-09-16 23:46:44 +08:00
    www.name.com可以配置CNAME指向,name.com不行。关于原因可以自行google之。
    你去dnspod上试试就知道啦。
    aoom
        2
    aoom  
       2014-09-16 23:59:23 +08:00
    之前在 sinfir.com 上也是这样设置遇到和楼主一样的状况,后来是直接修改域名解析A记录
    lovine
        3
    lovine  
    OP
       2014-09-17 00:27:24 +08:00 via Android
    @aoom 我就是不理解 为什么 dnspod那里能直接解决的 都解析到服务器的 访问的是一个网站 但是大家好像都推崇用反代
    lovine
        4
    lovine  
    OP
       2014-09-17 00:28:51 +08:00 via Android
    @Lax 我是直接解析到vps 的 两条 是a 记录 都能直接访问 同一个网站啊
    kfll
        5
    kfll  
       2014-09-17 00:30:28 +08:00
    301 跟反代是什么关系
    lovine
        6
    lovine  
    OP
       2014-09-17 00:40:31 +08:00 via Android
    @kfll 可能我说错了 不过重点不是这个 不管301还是反代 写代码达到name.com到www.name.com这个效果
    dnspod 也能达到这个效果
    我只是不解为什么 好像都是推崇用代码的方式
    msg7086
        7
    msg7086  
       2014-09-17 02:44:20 +08:00 via iPhone   ❤️ 1
    @lovine 重点是301和反代是完全不同的两个东西。你6楼的前提就已经错了。
    qiayue
        8
    qiayue  
       2014-09-17 05:43:15 +08:00 via Android
    反代跟301不是一回事
    Tink
        9
    Tink  
       2014-09-17 08:26:09 +08:00 via iPhone
    你要是用反代来实现的话,至少需要两个nginx conf文件,一个配置原网站,一个写反代的站点;要是用301,那就只要一个nginx,其中一个location段写rewrite就可以了

    然后dnspod是cname解析的,完全不是一个东西,而且你裸域转www可以,但是www转裸域就不能cname
    mornlight
        10
    mornlight  
       2014-09-17 08:54:59 +08:00   ❤️ 1
    301是重定向,会返回给浏览器一个内容,类似:
    HTTP/1.1 301 Moved Permanently
    Server: nginx/1.4.4
    Date: Wed, 17 Sep 2014 00:51:14 GMT
    Content-Type: text/html
    Content-Length: 184
    Connection: keep-alive
    Location: http://www.name.com/

    <html>
    <head><title>301 Moved Permanently</title></head>
    <body bgcolor="white">
    <center><h1>301 Moved Permanently</h1></center>
    <hr><center>nginx/1.4.4</center>
    </body>
    </html>


    浏览器看到是返回的301,一般就自动跳到Location的网址那了。
    把裸域301到www站点一般是为了统一入口,搜索引擎也会将它们视为同一个站点。
    如果不是301,而是2个域名都提供一样的功能,那其实是2个网站。

    另外,你应该是把反向代理的意思理解错了...
    rrfeng
        11
    rrfeng  
       2014-09-17 09:35:09 +08:00   ❤️ 1
    @Lax
    @Tink

    没太看明白怎么回事,请指教一下

    cname 的话,是多个域名访问同一个站点(解析到一个 ip)。也就是浏览器里输入 name.comwww.name.com 实际上站点是一样的。nginx 里同样需要配置 server_name name.com www.name.com 才能正常接收请求。
    如果不用 cname ,用两条 A 记录也可以实现?

    但是想让访问 name.com 的时候直接变成 www.name.com 只能在 nginx 里做跳转了吧?

    所以这个问题根本是风马牛不相及的两件事?
    msg7086
        12
    msg7086  
       2014-09-17 13:05:06 +08:00
    @rrfeng 你说的完全正确啊……
    xiaou
        13
    xiaou  
       2014-09-17 13:38:50 +08:00
    @msg7086 借贴顺便问一下,301重定向后还需要绑定域名到目录吗?还是只要在dnspod做A记录就行了?目前实现了name.com转到www.name.com但是不绑定到服务器目录是否对搜索引擎收录有影响?
    感谢
    msg7086
        14
    msg7086  
       2014-09-17 14:46:21 +08:00 via iPhone
    @xiaou 一般一个全域跳转就行了
    xiaou
        15
    xiaou  
       2014-09-17 16:02:47 +08:00   ❤️ 1
    @msg7086 嗯,我只绑了@和*.name.com主域名然后再nginx下做了全域跳转www.name.com
    lovine
        16
    lovine  
    OP
       2014-09-17 16:41:25 +08:00   ❤️ 1
    @mornlight
    @msg7086
    @rrfeng
    @xiaou
    恩 我的意思应该是301和直接A记录解析的区别
    如果我不需要用cname 不考虑cname 一般我是直接两条A记录解析到ip的 (www和@)
    然后在 server_name 配置name.com www.name.com
    就都访问的是同一个内容了

    在nginx配置用301 跳转到www.name.com 达到的效果也是访问同一个内容

    所以两者的区别就在于 会被搜索引擎识别为1个网站 和两个网站吗?(其实我就是想问这两者的区别,可能不关反代的事情,是我理解错了 = =)
    xiaou
        17
    xiaou  
       2014-09-17 17:03:20 +08:00
    @lovine 我今天也在学习设置301所以考虑到了跟你差不多的问题,经过大家的意见和一些搜索,应该就是按照我上条回复的方式就ok,至于301到www.name.com还是name.com网上大家说效果差不多,所以nginx里我只绑定了name.com然后将.name.com进行301重定向到www.name.com这样应该搜索引擎就会认定所有name.com下的子域名都属于一个网站,我还将.name1.com这个老域名也重定向了过来。我理解的就是这样了,应该是正确的吧。。。
    mornlight
        18
    mornlight  
       2014-09-17 17:09:53 +08:00
    @rrfeng 让访问 name.com 的时候直接变成 www.name.com 最方便和稳妥的方法是301, name.com 这种裸域不要cname到www.name.com 上,任何cname都不要有。
    mornlight
        19
    mornlight  
       2014-09-17 17:13:55 +08:00
    @lovine 按17楼那样理解就好了。
    msg7086
        20
    msg7086  
       2014-09-17 19:08:32 +08:00
    @lovine 301的作用是让两个网站的访问地址变得一样。
    双A记录或者CNAME的作用是让两个访问地址对应的网站变得一样。

    他们是不一样的概念,不一样的用途。

    301 -> 不管访问 a.com 还是 b.com 最终都跳转为由 b.com 打开
    CNAME -> 不管访问 a.com 还是 b.com 最终都显示 B 网站的内容

    最典型的就是v2ex自己。访问带www和不带www的,结果cookie就不共享了……当然用cookie作用域也是可以,不过大多数情况都是站长自己决定用哪个域名,然后让所有其他的域名都跳转过来。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   811 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:57 · PVG 03:57 · LAX 12:57 · JFK 15:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.