Java:-Dhttps.proxyHost 未使用

mas*_*ann 1 java proxy tomcat amazon-ec2 amazon-web-services

我有一个在 EC2 中的 Tomcat 上运行的 java 应用程序,我想通过代理到达不同的 EC2 端点。让我们调用源https://source.com、目标https://destination.com和代理https://proxy.com

我的症状如下:

  1. 从我的源服务器访问端点是有效的:
    • wget destination.com返回一个输出,包括连接到代理,然后destination.com使用 200 ok 连接。
  2. 当我尝试通过源上的 API 使用 postman 进行调用时,出现以下错误:

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/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)

提前致谢。

use*_*421 5

您没有使用 Java API。http[s].proxyHost是为了HttpURLConnection和朋友。您似乎正在使用 Apache HTTP 客户端,该客户端显然不支持它们。