Search

API 엔드포인트가 있는데 왜 404가 뜰까?

분야
COMMON
주제
Nginx
심각도
낮음🤒
제보자
담당자
작성자
상태
처리 완료
이슈링크(optional)
작성일자
2025/08/12 08:37
공개여부
공개
글감

문제 상황

어떤 것을 하려다가 문제가 발생했는가?
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 등) 방지