问题
部署在linux上的java应用,其代码需要访问华为云sdk的接口。但是运行时,发现服务器到华为云的网络不通,于是找安全组的人申请了代理域名。
同时,将代理域名配置为linux的环境变量,如下
上述配置等同于在linux执行
export http_proxy=xxx:80
export https_proxy=xxx:80
然后登陆linux,通过curl尝试发现可以调通了
但是,应用代码中调用接口依旧不通
分析
进一步测试,发现telnet连不通,但curl可以。
为什么呢?因为curl走了代理,但telnet不会走代理(为什么不会走代理?),所以代码调用时会报连不上的错误。
解决
在java应用的启动参数中,加上代理设置
java -Dhttp.proxyHost=xxx -Dhttp.proxyPort=80 -Dhttps.proxyHost=xxx -Dhttps.proxyPort=80