
Nginx 프록시로 에러 화면 통합하기
두줄요약
Nginx 프록시 계층에서 에러 화면을 통합하고 정보 노출을 줄이는 방법을 정리했습니다. React API 요청까지 고려해 HTML과 JSON 에러 응답을 분기하는 설계도 설명했습니다.
문제 상황
- Nginx-Tomcat-Spring Boot 구조에서 장애 계층에 따라 Whitelabel, Tomcat 기본, Nginx 기본 에러 화면이 제각각 노출되는 문제
- 정보 노출과 서버 핑거프린팅 위험, 그리고 React SPA에서 HTML 에러 응답을 JSON으로 파싱하며 발생하는 흰 화면 문제
원인 분석
- 애플리케이션 내부 예외 처리로는 JVM 종료, 톰캣 자원 고갈, 롤링 업데이트 순단 같은 인프라성 장애를 다룰 수 없는 한계
- Nginx가 백엔드 응답 본문을 그대로 전달하면 내부 스택트레이스와 상태 정보가 외부로 노출될 가능성
- API 요청과 일반 브라우징 요청을 같은 에러 응답으로 처리할 때 프론트엔드 파싱 오류 발생
해결 방법
- Nginx의 proxy_intercept_errors로 3xx 이상 응답을 가로채고 error_page로 내부 재라우팅하는 중앙 에러 제어 구성
- internal 지시어와 정적 에러 파일 분리로 외부 직접 접근을 차단하고, 백엔드 응답 바디를 폐기해 정보 노출을 방지
- map과 Accept 헤더 분기로 HTML 화면과 JSON 에러 응답을 나눠 React API 호출의 흰 화면 문제를 방지




