公司代理环境下本地Apache Tomcat无法访问互联网问题求助
Magnolia CMS本地Tomcat代理失效排查方案
- 补全JVM代理配置
你当前仅配置了HTTPS协议的代理参数,需补全全协议配置,同时添加本地地址免代理规则,避免内网、本地请求被代理拦截。完整配置参考如下:
配置完成后可在代码中添加临时日志打印set "JAVA_OPTS=%JAVA_OPTS% -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=3128" set "JAVA_OPTS=%JAVA_OPTS% -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=3128" set "JAVA_OPTS=%JAVA_OPTS% -Dftp.proxyHost=127.0.0.1 -Dftp.proxyPort=3128" set "JAVA_OPTS=%JAVA_OPTS% -Dhttp.nonProxyHosts=localhost|127.*|[::1]|*.公司内部域名.com"System.getProperty("http.proxyHost")等参数,确认JVM启动后参数未被覆盖。 - 检查Magnolia CMS独立代理配置
Magnolia自带的HTTP客户端默认不会读取JVM系统代理参数,需要单独配置:- 可直接修改项目中的
magnolia.properties配置文件,添加如下参数:
magnolia.http.proxy.host=127.0.0.1 magnolia.http.proxy.port=3128 magnolia.https.proxy.host=127.0.0.1 magnolia.https.proxy.port=3128 magnolia.http.proxy.exceptions=localhost,127.0.0.1,*.公司内部域名.com- 也可登录Magnolia管理后台,在「配置」-「server」节点下修改代理相关配置项。
- 可直接修改项目中的
- 分层验证代理连通性
先确认CNTLM代理本身可用:在本地CMD执行curl -x 127.0.0.1:3128 https://www.baidu.com验证返回正常。
再在项目中添加临时测试接口,分别用两种方式发起对外请求:- 用JDK原生
HttpURLConnection发起请求,验证JVM代理配置是否生效 - 调用Magnolia自带的HTTP请求工具类发起请求,验证CMS层面代理配置是否生效
- 用JDK原生
- 排查系统层面访问限制
检查Windows Defender防火墙、公司终端安全软件的出站规则,确认java.exe、tomcat9.exe进程未被禁止访问网络,也未被限制走本地代理端口。 - 确认Tomcat启动参数未被覆盖
若你通过IntelliJ启动Tomcat,需检查运行配置中的「VM options」是否存在冲突参数,同时在catalina.bat开头添加echo %JAVA_OPTS%,启动时查看控制台输出的参数是否包含你配置的代理项,避免IntelliJ启动时覆盖了环境变量配置。
内容的提问来源于stack exchange,提问作者Wirsing
相关产品推荐
相关产品推荐

