[nginx] header 누락

Simple·2023년 8월 1일
1

트러블슈팅

목록 보기
12/13
post-thumbnail
post-custom-banner

문제 원인


    @PostMapping("/logout")
    public void logout(@RequestHeader(HttpHeaders.AUTHORIZATION) String accessToken,
                       @RequestHeader("REFRESH_TOKEN") String refreshToken){
        authUseCase.logout(accessToken.substring(7), refreshToken);
    }
  • 로그아웃시 header에 access token과 refresh token을 넘겨 받는 상황

그러나 refresh token은 HttpHeaders가 아닌 custom header로 넘겨받았는데,

서버에서 REFERSH_TOKEN에 대한 header 값이 존재하지 않는다 라고 에러를 발생시킨다.

로컬에서는 정상 작동이 되지만, ec2 개발 서버에서는 값을 못찾는 것을 보고
nginx에서 필터링이 작용할거라고 추측할 수 있었다.

그래서 찾아본 결과 nginx에서는 header에 underscore 사용시 default로
무시한다.

해결


공식문서를 통해 찾은 해결법은

  • nginx.conf에 underscores_in_headers on 을 설정해준다.

또 다른 방법으로는

  • ingress를 사용하는 경우 nginx 의 configmap 에 enable-underscores-in-headers: "true" 값을 설정한다.

위와 같은 방법들이 있지만
나는 nginx에서 default로 underscore를 off로 한 이유가 있을 것 같아서
custom header 네이밍을 REFRESH_TOKEN -> Refresh-Token으로 변경해서 해결했다.

참고 문서

http://nginx.org/en/docs/http/ngx_http_core_module.html#underscores_in_headers

profile
몰입하는 개발자
post-custom-banner

2개의 댓글

comment-user-thumbnail
2023년 8월 1일

잘 봤습니다. 좋은 글 감사합니다.

1개의 답글