有没有一种方法可以让 Artifactory 不在本地存储工件并从下游源传播响应 headers?

Is there a way for Artifactory to not store artifacts locally AND propagate response headers from the downstream source?

背景

我们在内部网络上使用 Artifactory 并将 S3 存储桶代理为通用远程存储库。最初的目的是作为代理和缓存,以便我们的内部用户可以从我们的网络中访问文件。他们无法访问开放的互联网。

在开发过程中,我们意识到 S3 objects 会不时发生变化,因此决定取消设置 "Store artifacts locally?" 复选框,因为我们需要将 Artifactory 作为代理但不一定是缓存。如果 S3 出现故障,我们就会遇到更大的问题。

由于 S3 objects 正在流式传输,出于(事后看来)显而易见的原因,从 HTTP 响应中删除了 X-Checksum-* header 的意外后果。或者,我们的 S3 objects 有额外的元数据 header,其中包括校验和 ex。 x-amz-meta-digest-sha1。我们有逻辑检查 header 来验证负载。

问题

当我们不在本地缓存工件时,我能否让 Artifactory 传递来自 S3 的响应 header?

A​​rtifactory 不 pass-through header 来自远程存储库;没有启用它的设置。

作为解决方法,由于 Artifactory return X-Checksum-Sha1 header 如果它存在于来自远程存储库的响应中,您可以在两者之间放置一个反向代理(例如 nginx) Artifactory 和 S3 仅将 S3 x-amz-meta-digest-sha1 header 转换为具有相同值的 X-Checksum-Sha1 header。 这应该有效...

HTH, 艺侬