문제 상황
•
어떤 것을 하려다가 문제가 발생했는가?
◦
Slack 메시지 전송 기능을 구현 후, 보내기(http://localhost/slack/send POST 요청) 시도
•
발생한 환경, 프로그램
◦
LOCAL
•
발생한 문제(에러)
◦
요청 시 404 Not Found 응답
원인
•
추정되는 원인
1.
백엔드 애플리케이션에 /slack/send 엔드포인트 없나?
2.
백엔드 로그 확인
3.
/slack/send 요청 기록이 없음 = 요청이 애플리케이션에 도달하지 조차 못했다는 것..!
•
실제 원인
1.
nginx 설정 파일(configure.conf) 확인
2.
/slack 경로에 대한 명시적인 location 규칙이 없었음
→ 이 때문에 Nginx는 기본 규칙에 따라 http://host.docker.internal:4242로 요청 전송함
location / { proxy_pass http://host.docker.internal:4242; ... } // 기본 규칙
TypeScript
복사
→ 근데 http://host.docker.internal:4242에서 실행 중인 백엔드에는 /slack/send라는 엔드포인트가 없으므로 404 Not Found 응답 반환
요약 : Nginx 설정에 /slack 경로에 대한 프록시 규칙이 없어서 요청이 잘못된 백엔드 포트로 전달됨
최종 해결
•
해결방법
Nginx 설정 파일에 /slack 경로를 처리하는 location 블록 추가하여 /slack/* 요청이 올바른 백엔드 서버로 프록시될 수 있도록 함으로써 문제 해결
◦
코드
location ^~ /slack {
proxy_pass http://host.docker.internal:2424;
proxy_set_header Host $host;
}
TypeScript
복사
▪
/slack으로 시작하는 요청 → Nginx가 받아서 host.docker.internal:2424로 전달
▪
요청의 Host 헤더(localhost)를 그대로 백엔드 서버로 전달 → 백엔드 서버가 잘못된 도메인으로 인식해 발생할 수 있는 문제(CORS 등) 방지