가상 호스트

가상 호스트는 단일 호스트 시스템이 여러 개의 호스트 시스템과 유사할 수 있도록 하는 구성 엔티티입니다.

가상 호스트는 자신이 처리하는 MIME(Multipurpose Internet Mail Extensions) 유형의 목록을 유지보수합니다. 가상 호스트를 하나 이상의 웹 모듈과 연관시킬 수 있지만, 각 모듈은 하나의 가상 호스트와만 연관이 가능합니다. 하나의 가상 호스트와 연관된 자원은 가상 호스트가 실제 시스템을 공유하는 경우에도 다른 가상 호스트와 연관된 자원과 데이터를 공유할 수 없습니다.

각 가상 호스트에는 논리 이름과 자신을 알리는 하나 이상의 DNS 별명 목록이 있습니다. DNS 별명은 서블릿을 요청하는 데 사용되는 TCP/IP 호스트 이름 및 포트 번호(예: yourHostName:80)입니다. 포트 번호가 지정되지 않으면 80이라고 가정됩니다.

가상 호스트 구성은 해당 가상 호스트 항목에 대한 포트에서 와일드카드 항목을 사용합니다.
  • 기본 별명은 비보안 외부 포트를 사용 중인 *:80입니다.
  • *:9080 양식의 별명은 비보안 내부 포트를 사용합니다.
  • *:9443 양식의 별명은 보안 내부 포트를 사용합니다.
  • *:443 양식의 별명은 보안 외부 포트를 사용합니다.

서블릿, JavaServer Pages 파일 또는 관련 자원에 대한 클라이언트 요청에는 해당 자원에 고유한 DNS 별명 및 URI(Uniform Resource Indicator)가 포함되어 있습니다. 서블릿, JavaServer Pages 파일 또는 관련 자원에 대한 클라이언트 요청이 수신되면 DNS 별명을 알려진 모든 가상 호스트 그룹의 목록과 비교하여 올바른 가상 호스트를 찾습니다. URI는 알려진 모든 URI 그룹의 목록과 비교하여 올바른 URI 그룹을 찾습니다. 가상 호스트 그룹 및 URI 그룹을 찾은 경우, 요청은 처리를 위해 대응되는 서버 그룹으로 전송되며 응답이 브라우저로 리턴됩니다. 일치하는 가상 호스트 그룹이나 URI 그룹이 없으면 브라우저에 오류가 리턴됩니다.

가상 호스트는 특정 노드 또는 시스템과 연관되지 않습니다. 이는 라이브 오브젝트가 아닌 구성이므로, 이를 작성할 수는 있지만 이를 시작하거나 중지할 수는 없습니다. 기본 가상 호스트(이름이 default_host임)는 처음 애플리케이션 서버를 시작할 때 자동으로 구성됩니다. 동일한 노드 또는 실제 시스템에서 서로 간에 자원을 특정하게 격리하고자 하지 않는 한, 기본 호스트 이외에 가상 호스트가 필요한 경우는 거의 없습니다.

기본 가상 호스트의 DNS 별명은 *:80*:9080으로 구성됩니다. 여기서, 포트 80은 HTTP 서버 포트이며 포트 9080은 기본 서버의 HTTP 전송을 위한 포트입니다. 기본 가상 호스트에는 공통 별명이 포함됩니다(예: 시스템의 IP 주소, 단축 호스트 이름 및 완전한 호스트 이름). 이 별명 중 하나는 서블릿과 같은 자원에 액세스하기 위한 경로의 첫 번째 파트를 구성합니다. 예를 들어, 별명 localhost:80은 요청 http://localhost:80/myServlet.에서 사용됩니다.

자원을 요청할 때 본 제품은 정의된 가상 호스트의 별명으로 요청을 맵핑하려고 시도합니다. 가상 호스트의 http://host:port/ 부분은 대소문자를 구분하지 않지만, 그 뒤에 나오는 URL은 대소문자를 구분합니다. URL에 대해서는 영숫자가 모두 일치해야 합니다. 다른 포트 번호는 다른 별명으로 취급됩니다.

예를 들어, 요청 http://www.myhost.com/myservlethttp://WWW.MYHOST.COM/myservlet에는 성공적으로 맵핑되지만 http://WWW.MYHOST.COM/MYSERVLET 또는 Www.Myhost.Com/Myservlet에는 맵핑되지 않습니다. 나중의 두 경우에는 대소문자 불일치로 인해 이 맵핑이 실패합니다. 요청 http://www.myhost.com/myservlethttp://myhost/myservlet 또는 http://myhost:9876/myservlet에 성공적으로 맵핑되지 않습니다. 이 맵핑은 영숫자가 정확하지 않기 때문에 실패합니다.

포트별로 별명에 대해 와일드카드 항목을 사용할 수 있으며, 특정 포트의 모든 유효한 호스트 이름 및 주소 조합이 특정 가상 호스트로 맵핑되도록 지정할 수 있습니다.

정의된 가상 호스트의 별명으로 맵핑될 수 없는 별명을 사용하여 자원을 요청하는 경우, 요청을 실행하기 위해 사용된 브라우저에서 404 오류가 수신됩니다. 이 메시지는 가상 호스트를 찾을 수 없음을 기술합니다.

두 개의 연관 세트가 가상 호스트에 대해 발생합니다. 애플리케이션 배치는 애플리케이션을 가상 호스트와 연관시킵니다. 가상 호스트 정의는 애플리케이션 서버의 웹 서버 포트 지정 또는 HTTP 전송 및 시스템의 네트워크 주소를 가상 호스트를 연관시킵니다. 예를 들어, snoop 서블릿에 대한 웹 클라이언트 요청에서 플로우를 보면 다음 조치가 발생합니다.
  1. 웹 클라이언트는 웹 주소 http://www.some_host.some_company.com:9080/snoop에서 snoop 서블릿을 요청합니다.
  2. some_host 시스템에는 독립형 애플리케이션 서버 server1에 지정된 9080 포트가 있습니다.
  3. Server1은 가상 호스트 지정을 보고 별명 some_host.some_company.com:9080에 지정된 가상 호스트를 판별합니다.
  4. 애플리케이션 서버가 해당 DNS 문자열에 대한 명시적 별명이 없음을 발견합니다. 하지만 포트 9080에서 호스트 이름 *에 대한 와일드카드 지정이 존재하므로 이 와일드카드는 일치입니다. 일치를 정의하는 가상 호스트는 default_host입니다.
  5. 애플리케이션 서버는 default_host에 배치된 애플리케이션을 보고 snoop 서블릿을 찾습니다.
  6. 애플리케이션 서버는 웹 클라이언트에 대해 애플리케이션 역할을 수행하며 요청자는 snoop 서블릿을 사용할 수 있습니다.
표 1. 가상 호스트에 대한 별명
가상 호스트 별명 포트 번호
default_host * 9080
default_host localhost 9080
default_host my_machine 9080
default_host my_machine.my_company.com 9080
default_host localhost 80

임의의 수만큼 가상 호스트에 대한 별명을 보유할 수 있습니다. 다음과 같이 중복되는 별명도 가질 수 있습니다.

애플리케이션 서버는 웹 클라이언트 주소에 지정된 명시적 주소를 사용하여 일치를 찾습니다. 그러나 이는 명시적 주소를 일치시키기 전에 패턴과 일치하는 기타 별명에 대한 일치를 분석할 수 있습니다. 별명의 목록에서 별명을 처음으로 정의한다고 해서 제품이 일치하는 별명을 찾을 때마다 검색 순서가 보장되지는 않습니다.

중복된 별명의 가상 호스트. 실수로 9060 대신 admin_host에 대해 포트 9080을 정의했으므로, 두 가상 호스트에 대해 중복하는 별명을 정의한다고 가정합니다.

서로 다른 두 개의 가상 호스트에 대해 동일한 별명을 사용할 경우 문제점이 발생할 수 있습니다. 예를 들어, default_host에서 기본 애플리케이션 및 snoop 서블릿을 설치했다고 가정합니다. admin_host라고 하는 다른 가상 호스트도 보유하고 있습니다. 그러나 admin_host에는 기본 애플리케이션 또는 snoop 서블릿을 설치하지 않았습니다.

표 2. 중복된 별명의 가상 호스트.
가상 호스트 별명 포트 번호
default_host * 9080
default_host localhost 9080
admin_host * 9060
admin_host my_machine.com 9080

http://my_machine.com:9080/snoop에 대해 웹 클라이언트 요청이 수신된다고 가정합니다.

애플리케이션 서버가 *:9080에 대해 요청을 일치시키는 경우, 애플리케이션은 default_host에서 제공됩니다. 애플리케이션 서버가 my.machine.com:9080에 대해 요청을 일치시키는 경우, 애플리케이션을 찾을 수 없습니다. 요청을 발행하는 브라우저에서 404 오류가 발생합니다. 메시지는 가상 호스트를 찾을 수 없음을 기술합니다.

이 문제점은 일치하는 별명을 보유한 첫 번째 가상 호스트에서 요청된 애플리케이션을 찾지 못한 결과로 발생합니다. 별명을 코드화하는 올바른 방법은 수신 요청의 별명 이름을 모든 가상 호스트 정의에서 하나의 가상 호스트와만 일치시키는 것입니다. URL이 둘 이상의 가상 호스트와 일치할 수 있는 경우에는 기술된 문제점을 보게 됩니다.


주제의 유형을 표시하는 아이콘 개념 주제



시간소인 아이콘 마지막 업데이트 날짜: Monday, 5 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=cwlp_virtual_hosts_ovr
파일 이름: cwlp_virtual_hosts_ovr.html