JVM参数:针对HTTPS的非代理主机

14

所以我有一个相当复杂的环境变量_JAVA_OPTIONS

export _JAVA_OPTIONS="-Dhttp.proxyHost=my-proxy.com -Dhttp.proxyPort=1080 
  -Dhttps.proxyHost=my-proxy.com -Dhttps.proxyPort=1080 
  -DsocksProxyHost=my-socks-proxy.com 
  -Dhttp.nonProxyHosts=\"localhost|127.0.0.1|*.local|*.my-co.com\""

然而,当我尝试使用Apache HTTP客户端API从Scala代码中运行它时,我无法使其忽略内部服务器URL。

https://username:pwd@server.my-co.com/foo/bar

我是否需要为HTTPS指定不同的nonProxyHosts?文档没有说明这样的参数。我错过了什么?我使用的是Mac。


根据http://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html#Proxies,`http.nonProxyHosts`代理设置是HTTPS的正确属性。在同一文档中,有一个SOCKS段落,其中写道:“设置SOCKS代理服务器将导致所有TCP连接通过该代理进行,除非指定其他代理。” my-co.com应该通过my-socks-proxy.com还是my-proxy.com访问? - jaume
1个回答

11

这个答案是针对主要问题的,出于某种原因我最初认为这是ColdFusion专用的。

这很少有记录,但是有一个可以使用的https非代理主机参数:

-Dhttps.nonProxyHosts=

很多文档都说明-Dhttp.nonProxyHosts会同时覆盖 http 和 https。比如在 ColdFusion 中就是这种情况。但在其他情况下,比如 Weblogic,你必须同时使用 http 和 https 版本参数。

对于 ColdFusion,它不能正常工作的原因是 ColdFusion 在-Dhttp.nonProxyHosts参数周围添加了引号:

-Dhttp.nonProxyHosts="my-server"

如果您不使用引号,那么应该没问题:

-Dhttp.nonProxyHosts=my-server

16
https.nonProxyHosts 是不存在的。文档中说明 HTTPS 协议处理器将使用与 HTTP 协议相同的 nonProxyHosts 属性。 - artbristol
3
显然,在Weblogic上有这样的东西,它并不在意文档。 - 0x5C91
Oracle Java SE文档记录了nonProxyHosts选项的使用,因此它是受支持的。在我的情况下,我必须在选项值周围使用引号。请参阅https://docs.oracle.com/javase/8/docs/technotes/guides/net/proxies.html。 - Ioannis K. Moutsatsos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接