서비스 배포 후, POST 요청을 보냈는데 예상과 다르게 GET 요청으로 서버에 도달하는 문제가 발생했습니다. 특히, 프론트엔드에서 로그인이나 글 작성과 같은 POST 요청을 보내도 서버에서는 이를 GET 요청으로 처리해 오류가 발생하였습니다.
처음에는 프론트엔드의 Axios 설정이나 Spring Security의 필터에서의 리다이렉트 문제일 것으로 판단하고 해당 부분을 계속 수정했지만, 문제는 해결되지 않았습니다.
문제는 Nginx에서 HTTP 요청을 HTTPS로 리다이렉트하는 과정에서 발생했습니다.
303 응답이 POST를 GET으로 바꾸는 것을 간과하고 있었습니다.
아래는 Nginx 코드와 시퀀스 다이어그램입니다:
server {
listen 80;
server_name ... ...;
location / {
return 303 https://$host$request_uri;
}
}

이 문제를 해결하기 위해서는 아래와 같은 방법들이 있습니다:
303을 307(Temporary Redirect) 또는 308(Permanent Redirect)으로 변경
Frontend에서 response를 받아 직접 redirect 수행
Frontend에서 요청을 HTTPS로 확실히 보내기
따라서 Nginx에서의 리다이렉트 코드는 삭제하고, Frontend의 환경변수를 명확히 수정하여 문제를 해결하였습니다.