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

咨询一个与 cname 有关的技术问题,怎么让自己写的系统支持 cname 域名?

  •  
  •   cai314494687 ·
    forecho · 2020-05-29 11:10:10 +08:00 · 2938 次点击
    这是一个创建于 1622 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我有一个 域名 xx.b.com , 现在 www.a.com cname 到了 xx.b.comxx.b.com 能正常访问,www.a.com 访问 404

    我怎么解决这个问题?需要为这个 www.a.com 配置 nginx 吗?
    17 条回复    2020-06-02 14:04:25 +08:00
    MrCastle
        1
    MrCastle  
       2020-05-29 11:18:20 +08:00
    虽然不知道是什么问题。
    但是两个域名都是你的,为什么需要 cname ?不是直接 A 记录就可以了吗?
    cname 应该是给 CDN 用的吧。
    以上纯属个人意见。
    cai314494687
        2
    cai314494687  
    OP
       2020-05-29 11:21:25 +08:00
    @MrCastle #1 我表述有点问题。实际的场景是,我现在是想支持用户绑定自己的域名。
    xiri
        3
    xiri  
       2020-05-29 11:22:16 +08:00
    需要把 www.a.com 这个域名加到 nginx 的 server_name 里
    qianyugang
        4
    qianyugang  
       2020-05-29 11:25:00 +08:00
    是要做一套类似于 Gitpage 的那种吗?用户绑定自己域名发布
    cai314494687
        5
    cai314494687  
    OP
       2020-05-29 11:26:40 +08:00
    @xiri #3 那每加一个用户配置了一个域名,我就得配置一下 nginx ?然后还得重启 nginx ?那跟自己配置 IP 有什么区别?
    cai314494687
        6
    cai314494687  
    OP
       2020-05-29 11:27:02 +08:00
    @qianyugang #4 差不多
    xiri
        7
    xiri  
       2020-05-29 11:34:14 +08:00   ❤️ 1
    @cai314494687
    你的这种需求直接写 server_name _ 吧,不过这样的问题就是只要域名解析了就能访问,没法做权限控制。
    要实现 github pages 那样可能需要自己搞一些黑科技,比如在代码中做判断之类的
    imdong
        8
    imdong  
       2020-05-29 11:34:53 +08:00 via iPhone
    泛域名,nginx default_server 指向自己的程序。然后程序内根据域名处理。

    如果是用户自己上传的,就 root /htdocs/$host/
    imydou
        9
    imydou  
       2020-05-29 11:36:40 +08:00 via iPhone
    0server_name _;
    iwuzhuo
        10
    iwuzhuo  
       2020-05-29 14:24:38 +08:00
    配置:

    - nginx.conf: server_name *.b.com
    - dns: www.a.com cname uid.b.com
    cai314494687
        11
    cai314494687  
    OP
       2020-05-29 15:49:12 +08:00
    @iwuzhuo #10 我目前就是这样配置的,但是访问 www.a.com 的时候是 404
    joesonw
        12
    joesonw  
       2020-05-29 15:54:59 +08:00
    nginx 的话是要加的. 动态配置的反向代理的话, 上 treafik 比较方便.
    xyjincan
        13
    xyjincan  
       2020-05-29 16:44:35 +08:00
    把 server name 这一行删掉?
    zhuweiyou
        14
    zhuweiyou  
       2020-05-29 16:57:19 +08:00
    目测你问的是 泛域名
    baobao1270
        15
    baobao1270  
       2020-05-29 18:57:08 +08:00
    Nginx 写 server_name _;
    在自己的程序里再判断域名
    zcxey2911
        16
    zcxey2911  
       2020-05-31 13:34:58 +08:00
    其实这个问题最后演变成了动态修改 nginx 配置的问题
    metrue
        17
    metrue  
       2020-06-02 14:04:25 +08:00
    我在做 https://giki.app 的时候是这么做的:
    1. 在你的 ngnix (或者其他 web proxy) 配置好泛域名支持
    2. 给每一个用户分配一个 sub domain (如 a.mydomain.com)
    3. 然后用户就可以通过 CNAME 指向他自己的 sub domain
    4. 在你的自己程序中处理不同的用户(也就是不同的 sub domain) 的数据加载问题.

    当然我觉得让用户直接 A Record 到你的服务 IP 也问题不大感觉,听其他 v 友的看法.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1346 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:41 · PVG 01:41 · LAX 09:41 · JFK 12:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.