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

网站分站的技术实现

  •  
  •   Dongxiaohao · 116 天前 via Android · 1506 次点击
    这是一个创建于 116 天前的主题,其中的信息可能已经有所发展或是发生改变。
    op 看见有一些网站可以开通分站(主要是发卡网),就是用户输入一个二级域名,或者根域名后面拼一段唯一 ID ,用户付完款就可以直接通过子域名或者指定域名访问他开通的分站,并且在他后台可以对分站进行配置,比较好奇这种分站实现的技术原理。



    1 、分站的子域名那种模式我的常规理解是去 nginx 配置域名,dns 配置解析之类的,如何实现动态自助就可以开通分站,并且可以访问的,还可以和用户绑定。



    2 、域名固定后面加一个唯一路径我的理解就是这个唯一路径相当于一个 code 和用户那边绑定,网站内容会根据这个 code 在数据库查询用户的设置,动态加载内容?(本人拙见)
    10 条回复    2024-01-02 14:48:31 +08:00
    jahanngauss414
        1
    jahanngauss414  
       116 天前 via Android
    dns 可以配通配符解析,然后在流量入口拿 host 就好了(可能不是这样的实现,我猜的)
    danbai
        2
    danbai  
       116 天前 via Android
    @jahanngauss414 之前我实现过一个类似的分站就是这样搞得。
    Dongxiaohao
        3
    Dongxiaohao  
    OP
       116 天前 via Android
    @jahanngauss414 可以通配解析的话,那好像确实可以实现,服务端能拿到当前域名去操作,还不知道域名可以通配解析
    monkeyWie
        4
    monkeyWie  
       116 天前   ❤️ 1
    在网关层做一个解析,然后放到请求头里透传到后端服务
    timnottom
        5
    timnottom  
       116 天前
    我之前做过一个,域名泛解析,前端 js 通过正则匹配 host ( xx.example.com 中的 xx ),然后用 xx 去请求后端接口就行;不用动 nginx
    Dongxiaohao
        6
    Dongxiaohao  
    OP
       116 天前
    @timnottom #5 我有个疑问,我这是前后端分离的项目,照这种模式,是不是前端模板是定死的,只是后端根据 host 来动态响应?如果用户瞎输一个二级域名,网页写死的话,就是打开模板,但是没数据。
    是不是在网页打开之前都会有一个请求,带着当前 host 去请求后端接口,查看这个站点是否注册,如果没注册,让 vue 跳到 404 页面?
    bubble21
        7
    bubble21  
       116 天前
    1.前置:nginx 泛域名解析
    2.用户付完款 -> 动态解析 dns ,增加子域名
    3.前端使用当前访问域名请求接口
    4.后台获取子域名,匹配子站....
    之前公司多租户的做法,当时子域名没做 https
    twofox
        8
    twofox  
       116 天前
    @Dongxiaohao axios 写个请求拦截器不就得行了

    请求前先检查本地缓存是否带有相关的 flag

    没有的话带上二级域名请求后端,判断是否有这个站点,有就写进缓存,没有就跳到 404
    timnottom
        9
    timnottom  
       116 天前
    @Dongxiaohao #6 大概是你这思路;新打开一个网站,在所有动作之前,先通过这个"host"去请求后端数据(一般是站点配置,站点名之类的呀),之后再作其它处理
    nananqujava
        10
    nananqujava  
       116 天前
    参考下 ruoyi-vue-pro 里多租户的功能, 有绑定域名的实现 https://doc.iocoder.cn/saas-tenant/#_6-%E7%A7%9F%E6%88%B7%E7%8B%AC%E7%AB%8B%E5%9F%9F%E5%90%8D
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   883 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:55 · PVG 04:55 · LAX 13:55 · JFK 16:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.