Tomcat 서비스의 리다이렉트 설정은 어떻게 하나요?
💡 요약 정리
- 앞단 웹서버(nginx)가 80/443을 처리 후 각 계정의 Tomcat 포트로 포워딩합니다.
- server.xml에서 포트를 수정하거나 추가 바인딩하면 서비스가 정상 동작하지 않습니다.
- 이 구조에서 server.xml로 SSL/HTTPS 리다이렉트를 설정하면 내부적으로 무한 루프가 발생합니다.
- HTTPS 강제 접속은 JSP 소스 내부의 자바스크립트로 처리해야 합니다.
- Tomcat에 할당된 포트는 server.xml에서 확인만 하세요.
1. 서비스 구조와 리다이렉트 원리
- 카페24 Tomcat JSP 호스팅은 앞단에 웹서버(nginx)가 있습니다.
- 이 웹서버가 80(HTTP)과 443(HTTPS) 포트를 처리한 뒤, 각 계정에 할당된 Tomcat 포트로 요청을 포워딩합니다.
- Tomcat에 할당된 포트는 server.xml에서 확인할 수 있습니다. 다만, 포트를 수정하거나 추가로 바인딩하면 서비스가 정상 동작하지 않습니다.
이런 구조 때문에 server.xml에서 SSL을 직접 처리하거나 HTTPS 리다이렉트를 시도하면, 웹서버에서 전달되는 헤더 정보와 충돌하여 내부적으로 무한 루프가 발생합니다. 따라서 Tomcat(server.xml)에서 SSL/리다이렉트 설정은 사용이 어렵습니다.
2. 권장 방법: JSP 소스에서 HTTPS로 리다이렉트
2.1 코드 예시
아래 자바스크립트 코드를 JSP 페이지에 적용해, HTTP 접속 시 HTTPS로 자동 전환되도록 설정하세요.
<script type="text/javascript">
if (document.location.protocol == 'http:') {
document.location.href = document.location.href.replace('http:', 'https:');
}
</script>
2.2 적용 위치와 팁
- 모든 페이지에 적용하려면 공통 헤더 JSP(예: header.jsp) 또는 레이아웃 상단에 포함시키면 편리합니다.
- 페이지 렌더링 초기에 실행되도록, <head> 또는 <body> 시작부 근처에 배치하면 전환 속도가 더 자연스럽습니다.
- 기존 링크나 리소스(URL)가 http로 고정되어 있다면 https로 교체해 혼합 콘텐츠 경고를 예방하세요.
3. server.xml 관련 꼭 알아두기
- server.xml에서는 Tomcat에 할당된 포트 확인만 하세요.
- 포트 값을 수정하거나 추가 바인딩하지 마세요. 서비스가 정상 동작하지 않을 수 있습니다.
- 이 구조상 SSL 처리는 앞단의 웹서버에서 이루어지므로, Tomcat(server.xml)에서 SSL/리다이렉트 설정을 시도하면 무한 루프가 발생합니다.
4. 자주 묻는 질문
4.1 server.xml에서 리다이렉트(redirectPort, security-constraint 등)를 써도 되나요?
- 사용하지 마세요. 앞단 웹서버가 80/443을 처리하는 구조라 헤더와 충돌하여 무한 루프가 발생합니다. 본문에 안내된 자바스크립트 방법을 사용하세요.
4.2 HTTPS 강제 접속을 사이트 전체에 쉽게 적용하려면?
- 공통으로 include되는 JSP(예: header.jsp)에 스크립트를 삽입해 문서 상단에서 실행되도록 하면 전체 페이지에 일괄 적용할 수 있습니다.