大佬们,请教一下。
诉求为:想要把后台管理的接口 和 面向前端用户访问接口 分离开,后台管理的接口只能内网访问,面向前端的接口则开放到公网访问。
请问一下,使用两个gateway网关,一个对内网、一个对公网。代码层面怎么实现比较好一些?
是把后台管理的接口 和 前端的接口分成两个不同的服务吗?
如果分成两个不同的服务,那该怎么注册到不同的Gateway呢
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
2.6.0
正常情况都是通过nginx或者网关层面来配置的,不过这个需要有一个前期规划。
最简单的思路如下:
1. 定好外网访问、内网访问的模块,开发的时候以一个统一的api前缀配置
2. 部署阶段,nginx配置,只有外网访问的api前缀接口才可以正常访问
3. 配置好之后,访问内网接口,nginx判断如果是从外网接入,就会直接返回错误了
4. 只有当内网访问的时候,才会正常放行
另外一种思路如下:
1. 前期规划好api配置
2. nginx部署两套域名,a域名对外,反向代理对外模块的api,b域名对内,反向代理对内模块的api
3. 部署后外部系统只能访问到a域名,对内系统只能访问到b域名
这么做的好处就是配置可以灵活多变,不需要改动后端业务代码,唯一需要注意的就是前期开发阶段,要规划好每个模块的api
您回复的第二个思路,目前我比较疑惑的点有:
1、做两个gateway网关,分别通过Nginx反向代理到这两个网关上,然后两个网关去请求不同模块的api,是吧?
2、两个不同的模块,在开发的时候,他们都会连接到相同的nacos吗?
1. 不需要两个网关,全程只需要一个网关
2. 可以把外网内网的服务都放到一个工程内,也可以分成N个
3. 取决于controller的apikey,与其他的无关
4. 比如外网模块我所有api前缀都配置成/web,那么nginx就配置a域名,反向代理到 http://xxx/web就行了
5. 至于是否要都个gateway,多个服务注册,这些都是无所谓的,核心在于apikey的分配以及nginx的配置
扫一扫访问 Blade技术社区 移动端