我有一個運行在EC2的Tomcat上的java應用程序,我想通過代理到達另一個EC2端點。讓我們把源https://source.com
和目標https://destination.com
和代理https://proxy.com
Java:-Dhttps.proxyHost沒有被使用
症狀我有如下:
- 從我的源服務器擊中端點工作:
wget destination.com
返回包括連接輸出到代理,然後連接到destination.com
與200好。
- 當我嘗試通過源的API使用郵遞員撥打電話,我得到下面的錯誤:
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和https代理已導出
- 我有這兩個導出爲一個環境變量:
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 /捲曲通過代理到達端點。是否有另一個原因/位置,我錯過了導致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)
在此先感謝。
感謝您的回覆。你是說我在使用Apache HTTP客戶端,因爲如果我使用Java API,上述信息足以使其工作?對不起,我的朋友主要是圍繞這個區域編碼的,我沒有全部的背景知識。 – Calpis
@Calpis由於引發了異常,您顯然使用Apache HTTP客戶端。 – EJP
啊明白了,謝謝你寶貴的見解! – Calpis