我在EC2上有一个运行在Tomcat上的java应用程序,我希望通过代理到达不同的EC2端点。让我们调用来源https://source.com
和目标https://destination.com
以及代理https://proxy.com
我的症状如下:
wget destination.com
返回一个输出,包括连接到代理,然后以200 ok连接到destination.com
。 org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://destination.com": Connect to destination.com:80
...
connect timed out; nested exception is org.apache.http.conn.ConnectTimeoutException
我已经完成的事情:
http_proxy=http://destination.com:80
https_proxy=http://destination.com:80
验证java_opts是否也包含代理信息:
正在运行ps -ef | grep app_name
会返回以下内容:
-Dhttp.proxyHost=destination.com -Dhttp.proxyPort=80 -Dhttps.proxyHost=destination.com -Dhttps.proxyPort=80
即使导出这些信息并在java_opts中设置(在setenv.sh
中设置),似乎API没有使用代理到达目的地,因为从服务器,我可以使用wget / curl来覆盖端点通过代理。可能还有其他我错过的原因/位置导致API不使用代理吗?
我的java版本:java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
提前致谢。
答案 0 :(得分:2)
您没有使用Java API。 http[s].proxyHost
适用于HttpURLConnection
和朋友。您似乎正在使用Apache HTTP客户端,它显然不支持它们。