所有的应用部署在内网的一台服务器中,外网对网关的80端口做了映射,现在外网访问接口访问不了

Blade 未结 1 4349
日行千里
日行千里 剑圣 2020-04-26 12:21

一、该问题的重现步骤是什么?

bladex所有的应用都在内网的一台服务器上,IP地址为192.168.100.225,应用的端口是默认的,现在我想通过app去调用相关接口,在路由器上做了一个地址映射,目前只将gateway的80端口映射到外网地址的一个端口上了,app访问不到服务


二、你期待的结果是什么?实际看到的又是什么?

我希望正常访问服务,请问是需要将所有端口都映射到外网吗?


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

产品:bladex 

版本:2.5.0  

系统:window server 2016

四、请提供详细的错误堆栈信息,这很重要。



五、若有更多详细信息,请在下面提供。



1条回答
  • 不需要开放所有端口,只需要开放网关端口就行

    程序运行逻辑如下:

     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注册服务的地址相互联通

    15 讨论(0)
提交回复