You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Artifactory升级至7.84.14后非顶层构件下载报400错误求助

Artifactory升级后下载非外层构件报400错误的排查方案

问题描述

将Artifactory从7.77.11版本升级至7.84.14版本后,尝试下载仓库非最外层的构件时返回400错误,仅能看到请求日志,无额外错误详情:

"GET /ui/api/v1/download?repoKey=ext-maven-ms-local&path=com%252Fgoogle%252Fcode%252Ffindbugs%252Fjsr305%252F3.0.2%252Fjsr305-3.0.2.jar HTTP/2.0" 400 435 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0"

相关截图:

疑似根源

Artifactory 7.83.1版本将内置Tomcat升级至9.0.87,而Tomcat从9.0.34版本开始,已将原org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH配置项替换为encodedSolidusHandling,未手动修改过相关配置,但不确定是否为问题直接原因。

解决方案思路

1. 调整Tomcat编码处理配置

找到Artifactory内置Tomcat的server.xml配置文件(通常路径为$ARTIFACTORY_HOME/tomcat/conf/server.xml),在对应的<Connector>节点中添加encodedSolidusHandling="passthrough"属性,允许编码后的斜杠直接传递:

<Connector port="8081" protocol="org.apache.coyote.http11.Http11NioProtocol"
           connectionTimeout="20000"
           redirectPort="8443"
           encodedSolidusHandling="passthrough"/>

修改完成后重启Artifactory服务,测试构件下载功能是否恢复。

2. 排查Nginx代理配置

  • 检查Nginx配置中是否启用了merge_slashes on(默认开启),该配置会合并连续斜杠,可能导致编码后的斜杠被异常处理,可在对应location块中添加merge_slashes off;。
  • 确认Nginx没有对URL中的%2F进行二次解码或拦截的规则,修改后重启Nginx重试。

3. 绕过代理验证问题点

直接通过Artifactory的原生端口(如8081)访问并下载构件,若此时正常,则说明问题出在Nginx代理层;若仍报错,则聚焦Artifactory侧的Tomcat配置或内部处理逻辑。

4. 开启调试日志定位细节

在$ARTIFACTORY_HOME/etc/logback.xml中调整日志级别为DEBUG,重启服务后触发下载请求,查看是否有更详细的错误堆栈或异常信息,帮助定位具体故障点。

内容的提问来源于stack exchange,提问作者herbert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 07:54:53