제5장 가상 호스트

내용 목차

5.1. 개요
5.2. 웹 엔진과 가상 호스트
5.2.1. ServletContext 객체와 가상 호스트
5.3. 가상 호스트를 통한 웹 컨텍스트 요청
5.3.1. URL 매칭 예제
5.3.2. URL 매칭 순서
5.4. 가상 호스트 설정
5.4.1. 추가
5.4.2. 수정
5.4.3. 삭제

본 장에서는 가상 호스트의 사용 목적, 규칙 및 설정 방법 등에 대해 설명한다.

가상 호스트는 인터넷 도메인 이름을 기준으로 같은 URL로 서로 다른 웹 애플리케이션에 매핑할 수 있도록 한다. 즉, 2개 이상의 도메인 이름(예: “www1.foo.com” and “www2.foo.com”)을 하나의 웹 엔진에 설정하여 서로 다른 웹 컨텍스트를 서비스할 수 있다.

참고

웹 엔진 관점에서 웹 컨텍스트는 웹 애플리케이션과 동일한 의미이다.

본 절에서는 가상 호스트의 사용 목적, 규칙, ServletContext 객체와 가상 호스트의 관계에 대해 설명한다.

사용 목적

가상 호스트에 매핑된 도메인 이름을 기준으로, 같은 URL로 서로 다른 웹 애플리케이션에 매핑할 수 있다. 따라서 서비스 제공자는 하나의 웹 엔진으로 2개 이상의 웹 사이트를 서비스 이용자에게 제공할 수 있다. 이는 HTTP 1.1의 호스트 헤더를 이용해서 가상 호스트를 제공하는 기능과 동일하다.

가상 호스트는 웹 엔진에 설정할 수 있는 일종의 웹 컨텍스트 그룹이다. 가상 호스트가 웹 엔진의 구성 요소로서 어떻게 위치하는지는 [그림 1.1]을 참고한다.

다음은 가상 호스트의 사용 목적에 따른 이용 패턴을 보여준다.


위의 예제를 보면, 서로 다른 2개의 주소로 서로 같은 컨텍스트 패스(/service)에 접근할 수 있다. 실제로는 하나의 서버뿐이지만 HTTP 클라이언트 입장에서는 "www.foo.com"과 "www.bar.com"이라는 2대의 서버가 존재하는 것처럼 인식된다.

서비스 제공자 입장에서는 "/service"라는 동일한 주소 패턴으로 서로 다른 서비스를 제공할 수 있다. 위의 예제에서는 "www.foo.com"은 한국어 서비스를, "www.bar.com"은 영어 서비스를 제공하고 있다.

규칙

가상 호스트를 구성할 때 적용되는 규칙은 다음과 같다.

  • 가상 호스트에는 가상 호스트 이름을 부여한다.

    가상 호스트의 이름은 설정 파일 내에서 가상 호스트를 참조하기 위해서 내부적으로 사용되는 이름으로 웹 엔진 내에서 유일해야 한다.

  • 하나의 가상 호스트는 1개 이상의 도메인 이름이나 IP 주소를 매핑할 수 있다.

    JEUS는 이를 호스트 이름이라고 한다. 서로 다른 가상 호스트에 같은 호스트 이름을 매핑할 수 없다는 점에 유의한다.

  • 동일한 이름의 웹 컨텍스트는 서로 다른 가상 호스트에 deploy할 수 없다.

    주의

    서블릿 표준에서 서로 다른 가상 호스트에서 동일한 웹 컨텍스트를 공유할 수 없다고 정의되어 있다.

  • 동일한 패스를 가진 서로 다른 웹 컨텍스트 를 각각 서로 다른 가상 호스트에 deploy할 수 있다. 단, 하나의 가상 호스트 내에서는 동일한 패스를 가진 2개 이상의 웹 컨텍스트는 존재할 수 없다.

    웹 컨텍스트 이름은 Jakarta EE 표준에서 정의한 애플리케이션 또는 모듈 이름을 의미한다. 패스는 웹 애플리케이션 내에서 정의하는 Context Root 또는 Context Path를 의미한다. 웹 컨텍스트 이름은 JEUS Deploy 차원에서 관리하는 것이며, 웹 엔진은 Context Path를 관리한다.

JEUS 웹 엔진에는 기본 가상 호스트(Default Virtual Host)라는 묵시적인 가상 호스트가 존재한다. 웹 컨텍스트를 deploy할 때 명시적으로 가상 호스트에 지정하지 않으면, 기본 가상 호스트로 deploy한다. 이 가상 호스트의 이름은 "DEFAULT_HOME"이다. 예약어이므로 다른 가상 호스트 이름으로 지정할 수 없다.

본 절에서는 URL과 가상 호스트 내에 존재하는 웹 컨텍스트를 매칭하는 방법에 대해 설명한다.

다음은 웹 엔진과 가상 호스트, 웹 컨텍스트 간의 유효한 관계의 예시를 나타낸다.


[그림 5.2]를 기반으로 각각의 URL이 매칭되는 가상 호스트와 웹 컨텍스트는 다음과 같다.

  • http://www.foo.com/ctx1/test.jsp

    매칭되는 가상 호스트A
    매칭되는 웹 컨텍스트 이름ctx1
  • http://www.foo.com/ctx2/test.jsp
    매칭되는 가상 호스트A
    매칭되는 웹 컨텍스트 이름ctx2
  • http://www.bar.com/ctx1/
    매칭되는 가상 호스트B
    매칭되는 웹 컨텍스트 이름ctx1-1
  • http://www.bar2.com/ctx1/test.jsp
    매칭되는 가상 호스트C
    매칭되는 웹 컨텍스트 이름없음 (404 Not Found)
  • http://www.foo2.com/ctx2/
    매칭되는 가상 호스트C
    매칭되는 웹 컨텍스트 이름ctx2-2

참고

웹 컨텍스트 이름과 컨텍스트 패스는 서로 다른 개념이다. 일반적으로 같은 값을 사용하지만 지금처럼 가상 호스트를 이용해서 서비스를 구분하는 경우에는 서로 달라진다.

WebAdmin과 콘솔 툴을 사용하여 가상 호스트를 추가, 수정 및 삭제할 수 있다.

참고

본 절의 설정 예제에서는 편의상 이름을 "A", "B", "C"로 사용하였다. 실제 환경에서는 의미있는 이름을 사용한다.

WebAdmin과 콘솔 툴을 사용하여 가상 호스트를 추가할 수 있다.

WebAdmin 사용

WebAdmin을 사용하여 가상 호스트를 추가하는 방법은 다음과 같다.

  1. WebAdmin 왼쪽 메뉴에서 [Servers]를 선택하면 서버 목록 조회 화면으로 이동한다. 서버 목록에서 실행할 서버를 선택하면 서버 설정 화면으로 이동한다. 설정 화면에서 [Engine] > [Web Engine] > [Virtual Host] 메뉴를 선택한다.


  2. 설정 및 설정 변경을 위해 화면 왼쪽의 [LOCK & EDIT] 버튼을 클릭해서 설정변경 모드로 전환한다. ([그림 1.7] 참고)

  3. 가상 호스트 추가를 위해 Virtual Host 설정 화면에서 [ADD] 버튼을 클릭하여 다음과 같이 각 항목을 설정하고, [확인] 버튼을 클릭한다.

    다음은 'virtual_host1'이라는 이름의 가상 호스트를 설정한 화면이다.


    다음은 주요 설정 설정 항목에 대한 설명이다.

    항목설명
    Virtual Host Name

    가상 호스트를 참조하기 위해 내부적으로 사용하는 이름이다.

    "DEFAULT_HOST"는 기본 가상 호스트의 이름이기 때문에 사용해서는 안 된다.

    Host Name도메인 이름 또는 IP 주소, 그리고 포트를 포함하는 문자열이다.
    Properties가상 호스트별로 프로퍼티를 적용할 수 있다. JEUS에서 정의한 프로퍼티들도 적용 가능하다. 자세한 사항은 JEUS Reference Book”의 “1.7. 웹 엔진 프로퍼티”를 참고한다.
    Encoding가상 호스트별로 인코딩 옵션을 적용할 수 있다. 자세한 사항은 “1.6.5. 인코딩 설정”을 참고한다.
    Cookie policy가상 호스트별로 cookie policy을 적용할 수 있다. 자세한 사항은 “1.6.8. 쿠키 정책 설정”을 참고한다.

  4. 설정을 완료한 뒤 설정 내용의 반영을 위해 [Activate Changes] 버튼([그림 1.8] 참고)을 클릭하면 다음과 같이 화면에 나타난다.


콘솔 툴 사용

콘솔 툴을 사용하여 가상 호스트를 추가하려면 다음과 같이 add-virtual-host 명령어를 수행한다. 명령어에 대한 자세한 내용은 JEUS Reference Book”의 “4.2.8.7. add-virtual-host”를 참고한다.

WebAdmin과 콘솔 툴을 사용하여 가상 호스트를 수정할 수 있다.

WebAdmin 사용

WebAdmin을 사용하여 가상 호스트를 수정하는 방법은 다음과 같다.

콘솔 툴 사용

콘솔 툴을 사용하여 가상 호스트를 수정하려면 다음과 같이 modify-virtual-host 명령어를 수행한다. 명령어에 대한 자세한 내용은 JEUS Reference Book”의 “4.2.8.20. modify-virtual-host”를 참고한다.

가상 호스트 중 필요없거나 삭제하려면 WebAdmin과 콘솔 툴을 사용하여 가상 호스트를 삭제할 수 있다.

WebAdmin 사용

WebAdmin을 사용하여 가상 호스트를 삭제하는 방법은 다음과 같다.

참고

만약 해당 가상 호스트에 연결된 웹 애플리케이션들이 있다면(즉, 해당 가상 호스트를 Target으로 deploy된 애플리케이션이 존재한다면) 해당 가상 호스트는 삭제되지 않는다. 이 경우에는 연결되어 있는 Target을 웹 애플리케이션에서 삭제해야 가상 호스트를 삭제할 수 있다. 웹 애플리케이션의 Target 삭제는 JEUS Applications & Deployment 안내서”의 “4.3.9. 서비스 중인 애플리케이션에서 서비스 중인 서버 삭제”를 참고한다.

콘솔 툴 사용

콘솔 툴을 사용하여 가상 호스트를 삭제하려면 다음과 같이 remove-virtual-host 명령어를 수행한다. 명령어에 대한 자세한 내용은 JEUS Reference Book”의 “4.2.8.32. remove-virtual-host”를 참고한다.