[nginx] 实现域名代理

业务场景
有两个系统A、B,A、B两系统均有独立域名,但对外只想暴露A域名。
需要实现通过 A域名+B系统子路由 访问 系统B的子页面,图示如下。
image.png

浏览器访问一个页面,需要1、静态资源文件,需要2、发送请求获取服务端数据,那么如果需要实现在A域名下访问B页面,A系统至少需要分别实现1、2两部分的请求转发。
即:
1、将请求B系统静态资源文件的请求,转发到B系统前端
2、将请求B系统后端服务数据(api)转发到B系统后端。
image.png

对系统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配置如下图
image.png

做到上面这两点,百里之行已过六成,剩下的是解决:
1、仔细处理登录问题;
2、实现A->B系统的第一次跳转;
3、想好未鉴权直接访问B系统,B系统的行为,实现它。

上面列出的123也需要前后端配合,要干的工作需要耐心,调试起来挺麻烦的,慢慢尝试吧同学们。

完结。

同步更新到自己的语雀
https://www.yuque.com/diracke...

44 声望
1 粉丝
0 条评论
推荐阅读
[CSS] 网页引入图片background-image和src区别
1、img标签,在src属性中指向图片资源的方式(如下)<img src="./img/umi-image.jpg" />

DiracKeeko

JavaScript有用的代码片段和trick
平时工作过程中可以用到的实用代码集棉。判断对象否为空 {代码...} 浮点数取整 {代码...} 注意:前三种方法只适用于32个位整数,对于负数的处理上和Math.floor是不同的。 {代码...} 生成6位数字验证码 {代码...} ...

jenemy46阅读 5.9k评论 12

从零搭建 Node.js 企业级 Web 服务器(十五):总结与展望
总结截止到本章 “从零搭建 Node.js 企业级 Web 服务器” 主题共计 16 章内容就更新完毕了,回顾第零章曾写道:搭建一个 Node.js 企业级 Web 服务器并非难事,只是必须做好几个关键事项这几件必须做好的关键事项就...

乌柏木66阅读 6.1k评论 16

再也不学AJAX了!(二)使用AJAX ① XMLHttpRequest
「再也不学 AJAX 了」是一个以 AJAX 为主题的系列文章,希望读者通过阅读本系列文章,能够对 AJAX 技术有更加深入的认识和理解,从此能够再也不用专门学习 AJAX。本篇文章为该系列的第二篇,最近更新于 2023 年 1...

libinfs39阅读 6.3k评论 12

封面图
从零搭建 Node.js 企业级 Web 服务器(一):接口与分层
分层规范从本章起,正式进入企业级 Web 服务器核心内容。通常,一块完整的业务逻辑是由视图层、控制层、服务层、模型层共同定义与实现的,如下图:从上至下,抽象层次逐渐加深。从下至上,业务细节逐渐清晰。视图...

乌柏木43阅读 7.3k评论 6

CSS 绘制一只思否猫
欢迎关注我的公众号:前端侦探练习 CSS 有一个比较有趣的方式,就是发挥想象,绘制各式各样的图案,比如来绘制一只思否猫?思否猫,SegmentFault 思否的吉祥物,是一只独一无二、特立独行、热爱自由的(>^ω^&lt...

XboxYan43阅读 2.9k评论 14

封面图
从零搭建 Node.js 企业级 Web 服务器(二):校验
校验就是对输入条件的约束,避免无效的输入引起异常。Web 系统的用户输入主要为编辑与提交各类表单,一方面校验要做在编辑表单字段与提交的时候,另一方面接收表单的接口也要做足校验行为,通过前后端共同控制输...

乌柏木33阅读 6.2k评论 9

44 声望
1 粉丝
宣传栏