业务场景
有两个零碎 A、B,A、B 两零碎均有独立域名,但对外只想裸露 A 域名。
须要实现通过 A 域名 + B 零碎子路由 拜访 零碎 B 的子页面,图示如下。
浏览器拜访一个页面,须要 1、动态资源文件,须要 2、发送申请获取服务端数据,那么如果须要实现在 A 域名下拜访 B 页面,A 零碎至多须要别离实现 1、2 两局部的申请转发。
即:
1、将申请 B 零碎动态资源文件的申请,转发到 B 零碎前端
2、将申请 B 零碎后端服务数据(api) 转发到 B 零碎后端。
对系统 A (www.asystem.com),零碎 B(www.bsystem.com),想要实现达到 B 零碎的申请经由 A 零碎转发到 B,首先 B 零碎的申请要能被 A 零碎所辨认。
如果有两个雷同子路由 www.asystem.com/admin www.bsystem.com/admin 对应 A、B 两零碎的页面,那 A 代理 B 必定做不到。
所以要在子路由层面对 A、B 两零碎做个辨别,域名之后,子路由最前部,加个前缀 (须要别离对 A、B 两零碎前端进行革新)。
如:
www.asystem.com/a/admin
www.bsystem.com/b/admin
同理,对 A、B 两零碎的申请,也要有所辨别,咱们别离增加前缀 api/a、api/b (也是革新 A、B 两零碎前端;如果前端同学 nginx 用的好,前端 nginx 写 rewrite 配置,后端能够不改,但这事儿即便前端能够做,也不应该麻烦前端做,否则前端 nginx 配置会写的很冗余,可读性差,不容易保护。api 的革新工作后端要配合,即后端别离改为 api/ a 前缀、api/ b 前缀,改个对立前缀对后端来说不麻烦)。
革新工作实现后,下一步,通过配置 A 的 nginx 来实现
1、拜访 www.asystem.com/b/ 等价于拜访 www.bsystem.com/b/
2、/api/ b 结尾的申请转发到 B 零碎的服务端
外围的 nginx 配置如下图
做到下面这两点,百里之行已过六成,剩下的是解决:
1、认真解决登录问题;
2、实现 A ->B 零碎的第一次跳转;
3、想好未鉴权间接拜访 B 零碎,B 零碎的行为,实现它。
下面列出的 123 也须要前后端配合,要干的工作须要急躁,调试起来挺麻烦的,缓缓尝试吧同学们。
完结。
同步更新到本人的语雀
https://www.yuque.com/diracke…