피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Nginx proxy_pass Trailing Slash 유무에 따른 URI 처리 메커니즘 분석
Trailing and Non Trailing Slash in Nginx
AI 요약
Context
Nginx 설정 시 proxy_pass의 Trailing Slash 포함 여부에 따라 Backend로 전달되는 URI 경로가 완전히 달라지는 특성 존재. 단순한 설정 차이가 경로 불일치로 인한 404 에러나 API 라우팅 오류를 유발하는 핵심 병목 지점임.
Technical Solution
- proxy_pass URI 파트 부재 시 원본 URI 전체를 유지하며 Backend에 전달하는 append_original_uri 로직 수행
- proxy_pass 끝에 Slash(/) 추가 시 이를 URI 파트로 인식하여 replacement mode로 전환하는 내부 알고리즘 작동
- 매칭된 location prefix를 제거하고 이를 proxy_pass에 정의된 URI로 대체하는 경로 재작성 프로세스 적용
- URI 파트 존재 여부를 판단하는 내부 조건문에 따른 분기 처리로 최종 전달 URL 결정
- 단순 호스트+포트 구성과 URI 파트가 포함된 구성의 내부 파싱 결과 차이를 통한 경로 제어 설계
실천 포인트
- API Gateway 경로를 그대로 Backend에 전달하려면 proxy_pass 끝에 Slash를 제거 - Backend 서버에서 특정 Prefix를 제외한 경로만 수신해야 한다면 proxy_pass 끝에 Slash 추가 - location 정의와 proxy_pass URI의 일관성 여부를 확인하여 의도치 않은 Path Replacement 방지