로컬에서 api 요청
서버에서 api요청
서버에 헤더가 실리지 않아, 인가가 필요하여 guard를 걸어둔 api들이 모두 실행하지 못하는 error를 맞게되었다. api 테스트도 모두 통과하여서 코드에 병합했는데 너무 이상했다.
코드에러가 아닌 에러는 아직 내 수준에서는 찾기 너무 어렵다. 그래도 순차적으로 찾아나가 보자.
postman으로 해당 요청을 보내보았지만, 여전히 똑같이 header를 식별하지 못했다. swagger 문제가 아니였다.
ci/cd 과정을 거치며 이미지가 되면서 문제가 생겼을 수 있다.
로컬에서 서버에서 사용하는 docker image를 다운받아 실행해보았다.
하지만 여전히 토큰 검사는 잘되는 모습이다. 이러면 nest 서버에는 문제가 없고 nest외부의 요인에서 문제가 발생한 것을 알 수 있었다.
docker 컨테이너로 관리하기 때문에 우리의 서버는 linux버젼과의 문제는 없을거라 생각했다.
Pitfalls and Common Mistakes | NGINX
정말 한참을 찾았다. nginx 공식문서의 header부분을 보았는데, nginx는 underscore가 들어간 header는 자동으로 drop한다고 나와있다. 프론트와 소통할때 토큰명을 access_token
으로 정해놔서 nginx가 자동으로 drop한 것이다. 로컬에서는 당연히 nginx가 적용되지 않았기 때문에 제대로 실행된 것이였다.
e2e테스트를 통해 api 점검도 다 잘했다 생각했는데, 막상 진짜 서버에 띄우니 또 다른 문제가 발생하였다.
이래서 테스트를 모두 통과하였다고 api가 모두 정상적으로 동작하는 것이 아니라는 것을 깨닫고, test coverage가 100%여도 는 에러를 줄어들 뿐이지 없애주지는 않는다는 것을 개달았다