的业务场景有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识别。如果有两个A和B的页面对应的子路由www.asystem.com/adminwww.bsystem.com/admin相同,那么A肯定不能代理B,所以需要区分子路由级别的两个系统A和B。在域名后,在子路由的前面加上前缀(A、B两个系统的前端需要分别修改)。例如:www.asystem.com/a/adminwww.bsystem.com/b/admin同样,对系统A和B的请求应该有所区别。我们分别添加前缀api/a和api/b(同时Renovate了A系统和B系统的前端;如果前端同学nginx用的好,前端nginx写rewrite配置,后端-end不需要改,但是即使前端能做到,也不要劳烦前端去做,否则前端的nginx配置会写的很冗余,可读性差,而且不易于维护,api改造工作需要后端配合,即后端分别改成api/a前缀和api/b前缀,后端改一个统一的前缀也不麻烦)。改造工作完成后,接下来就是配置A的nginx,实现1,访问www.asystem.com/b/等同于访问www.bsystem.com/b/2。以/api/b开头的请求被转发到B系统服务器核心的nginx配置如下图所示,实现了以上两点。百里之行已过60%,剩下的就是解决:1、慎重处理登录问题;2.实现A->B系统第一步3.想着不需认证直接访问B系统,B系统的行为,并实现。上面列出的123也是需要前后端配合的。要做的工作需要耐心,调试起来也比较麻烦。同学们慢慢来试试吧。结尾。同步更新到你的语雀https://www.yuque.com/diracke...
