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)에 스크립트를 삽입해 문서 상단에서 실행되도록 하면 전체 페이지에 일괄 적용할 수 있습니다.