背景
同事负责的一个模块部分数据需要远程调用其他系统的接口,但是那个系统是部署在人家自己的内网服务器上的,那边提供了vpn和接口,经过浏览器和postman测试,均能正常请求到数据,于是直接用restTemplate开整
但是请求时候一直报错,提示连接超时,同事度娘了各种方法均没有得到解决,于是问我有没有解决方案
原因分析
浏览器和postman既然能正常请求到数据,代表对方的接口正常,vpn访问也正常,但是java代码中却请求不到,我分析原因可能是java代码远程调用的时候绕过了vpn(自己猜的,有大佬知道的可以告知一下)
解决方案
既然java中直接请求,那么通过有vpn的机子转发一次会怎么样呢?
于是我给出的方案是:通过nginx转发请求。在远程调用的时候,请求到nginx,然后通过nginx转发请求到对方服务器(当然nginx要运行在有vpn的机器上)
经过同事测试,可以正常请求到数据,问题解决