网站分站的技术实现

271 天前
 Dongxiaohao
op 看见有一些网站可以开通分站(主要是发卡网),就是用户输入一个二级域名,或者根域名后面拼一段唯一 ID ,用户付完款就可以直接通过子域名或者指定域名访问他开通的分站,并且在他后台可以对分站进行配置,比较好奇这种分站实现的技术原理。



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



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

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

没有的话带上二级域名请求后端,判断是否有这个站点,有就写进缓存,没有就跳到 404
timnottom
271 天前
@Dongxiaohao #6 大概是你这思路;新打开一个网站,在所有动作之前,先通过这个"host"去请求后端数据(一般是站点配置,站点名之类的呀),之后再作其它处理
nananqujava
271 天前
参考下 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

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

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

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

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

© 2021 V2EX