본문 바로가기
개발 및 운영/Kubernetes

rados gw s3 사용시 metadata 이름에 따른 403 SignatureDoesNotMatch 문제

by Joseph.Lee 2022. 1. 7.

EXTERNAL ----- nginx-ingress ----- RadosGW S3 Server

 

위와 같은 구성으로 운영을 하던 중 Nexus 에서 S3 를 사용하는데 npm login 등의 작업이 안되는 일이 발생하였다.

패킷 덤프 떠서 원인을 파악해 보았더니 PutObject 를 할 때 "x-amz-meta-blobstore.temporary-blob" 라는 메타데이터 헤더가 들어가는데 SignedHeaders 에는 x-amz-meta-blobstore.temporary-blob 가 있는데 실제 Header 에는 존재하지 않아서 그런 것이었다.

처음엔 Nexus이나 AWS-SDK 문제인가... 했는데 여기선 저 헤더를 보내는데, 이상하게 rados gw 쪽에서 저 헤더를 받지 않았다.

 

원인은 nginx 때문이었다.

 

ingress ConfigMap 에

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-configuration
data:
  enable-underscores-in-headers: "true"
  ignore-invalid-headers: "false"

이와 같이 추가하면 된다.

 

 

- nexus 에 올린 이슈 : https://issues.sonatype.org/browse/NEXUS-30820

 

반응형

댓글