一、该问题的重现步骤是什么?
bladex所有的应用都在内网的一台服务器上,IP地址为192.168.100.225,应用的端口是默认的,现在我想通过app去调用相关接口,在路由器上做了一个地址映射,目前只将gateway的80端口映射到外网地址的一个端口上了,app访问不到服务
二、你期待的结果是什么?实际看到的又是什么?
我希望正常访问服务,请问是需要将所有端口都映射到外网吗?
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
产品:bladex
版本:2.5.0
系统:window server 2016
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
不需要开放所有端口,只需要开放网关端口就行
程序运行逻辑如下:
1. 访问网关+服务名路由地址,比如 http://192.168.100.225/blade-auth/oauth/token
2. 网关服务收到请求后,去nacos查找blade-auth服务,找到对应注册的地址
3. 比如blade-auth服务对应的ip和端口是:http://192.168.100.225:8100/blade-auth/oauth/token,那么网关就会对这个地址进行请求转发
4. 如果是docker部署,服务在同一个子网,Gateway从nacos获取的也是子网地址,这种情况端口是不用额外开启的,可以直接调用联通
5. 如果没用k8s、dockerswarm部署,又分开在各个服务器,那么需要注册外网ip,并且开放端口,这样Gateway才能取到对应服务的外网ip并调用,否则会超时(具体指定ip注册看这个帖子:https://sns.bladex.cn/q-1233.html)
6. 最后Gateway转发请求完毕获取相关服务的返回结果,再一并返回给请求端
那么这样一来,问题就很清晰了,只要保证两点就可以访问成功:
1. 网关映射到外网
2. 网关服务能和nacos注册服务的地址相互联通
扫一扫访问 Blade技术社区 移动端