Java设置Socks代理

  • Post author:
  • Post category:Java

存在场景:服务器A可访问公网,B不能访问公网,此时服务器B上的服务可以通过A上的Socks代理访问公网。

  1. 在服务器A安装goproxy(也可以使用其他代理工具),启动socks5代理,具体见官方文档。
  2. 服务器B上的Java服务启动时,设置以下jvm参数
-DsocksProxyHost=hostname
-DsocksProxyPort=port
# 不通过代理访问的地址 必须同时设置以下两个才有效
-Dhttp.nonProxyHosts=localhost|127.*|[::1]
-DsocksNonProxyHosts=localhost|127.*|[::1]

一些第三方库(如:okhttp、httpclient)不会使用该代理配置

参考资料

https://github.com/snail007/goproxy/blob/master/README_ZH.md

https://docs.oracle.com/javase/8/docs/api/java/net/doc-files/net-properties.html

https://stackoverflow.com/questions/25445875/how-to-set-nonproxyhosts-for-a-socks-proxy#comment41358211_2544587

https://stackoverflow.com/questions/59106624/openjdk8-and-nonproxyhosts-is-not-working

Max

Run Forrest,run!