가상 호스트 사용

애플리케이션 및 이를 서비스하는 엔드포인트 간에 격리를 원하는 경우에는 가상 호스트를 사용할 수 있습니다.

단일 애플리케이션 서버는 종종 다수의 서로 다른 호스트 및 포트 구성의 요청에 응답합니다. 이는 다수의 이유가 결합되어 발생됩니다(예: 이름이 서로 다른 복수의 네트워크 인터페이스가 있는 시스템에서 실행 중임 또는 http 서버, 프록시 또는 로드 밸런서에서 라우팅됨). 이 경우에는 특정 호스트에서 접속할 수 있는 애플리케이션을 제어하고자 할 수 있습니다. 가상 호스트는 이 기능을 제공합니다. 이는 호스트 별명의 구성된 목록에 대해 요청된 호스트 이름 및 포트 번호(HTTP 호스트 헤더로부터 판별됨)와 일치시킵니다.

WebSphere Application Server Liberty에서는 기본 구성으로 충분합니다. 기본 가상 호스트(default_host)는 수신 호스트 및 포트 조합의 요청을 일치시키며, 이를 기본 애플리케이션 컨테이너에 전달합니다.

다음 목록은 가상 호스트를 구성할 때의 키 구성 요소를 보여줍니다.
  • virtualHost 구성 요소 ID 값.
  • hostAlias 하위 요소 구성.
  • allowFromEndpoint 하위 요소 구성(사용되는 경우).
  • WAR의 ibm-web-bnd.xml 또는 ibm-web-bnd.xmi 파일에서 가상 호스트 구성.
  • httpEndpoint의 호스트 속성 값.
  • httpEndpoint의 ID 속성 값.

두 애플리케이션을 서로 간에 분리

다음 예는 일부 필수 구성에 대한 이해도를 제공하기 위해 호스트 호스팅의 가장 일반적인 사용법 중 하나를 보여줍니다. 이 예는 서로 다른 포트에서 실행되는 두 개의 애플리케이션을 구성하는 방법을 보여줍니다. 또한 이 예에서는 로컬 호스트 인터페이스에서 오직 하나의 애플리케이션만 사용 가능을 보여줍니다.
<httpEndpoint id="defaultHttpEndpoint" host="*" httpPort="9080" />
<httpEndpoint id="alternateEndpoint" host="*" httpPort="9081" />

<virtualHost id="application-1">
    <hostAlias>your_host_name:9080</hostAlias>
</virtualHost>

<virtualHost id="application-2">
    <hostAlias>localhost:9081</hostAlias>
</virtualHost>

<enterpriseApplication location="myApp.ear" name="App1"/>
<webApplication location="myApp2.war" name="App2" />

defaultHttpEndpoint는 9080 포트의 모든 인터페이스를 표시하며, alternateEndpoint는 9081 포트의 모든 인터페이스를 표시합니다.

App1에 <virtual-host name="application-1"/>을 지정하는 ibm-web-bnd.xml 파일의 WAR 파일이 있는 경우, 이 애플리케이션은 your_host_name:9080/app1_context_root에서만 액세스가 가능합니다.

App2(WAR임)에 <virtual-host name="application-2"/>를 지정하는 ibm-web-bnd.xml 파일이 있는 경우, 이 애플리케이션은 localhost:9081/app2_context_root에서만 액세스가 가능합니다.

특정 가상 호스트를 지정하지 않은 세 번째 애플리케이션이 배치된 경우, 이 구성에서 해당 애플리케이션은 다른 포트를 지정하는 HOST 헤더를 포함하는 프록시 요청인 경우에만 액세스 가능합니다. 예를 들어, 포트 80의 프록시에 대해 요청이 작성된 경우 해당 포트는 hostAlias 스펙에 나열되지 않습니다. 따라서 이 요청은 default_host 가상 호스트로 라우팅됩니다.

요청된 호스트 또는 포트를 기반으로 애플리케이션 격리

Liberty의 기본 가상 호스트는 JMX 통신에도 사용됩니다. 애플리케이션 트래픽에서 JMX 통신을 격리하려면 다음 단계를 완료해야 합니다.
  1. 가상 호스트 이름을 결정하고, 새(비-기본) 호스트를 참조하도록 애플리케이션을 업데이트하십시오. 가상 호스트 요소를 WAR의 ibm-web-bnd.xml 또는 ibm-web-bnd.xmi 파일에 추가하십시오.
    <?xml version="1.0" encoding="UTF-8"?>
    <web-bnd
        xmlns="http://websphere.ibm.com/xml/ns/javaee"
        					  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://websphere.ibm.com/xmk/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-bnd_1_0.xsd"
        version="1.0" />
    
        <virtual-host name="proxiedRequests" />
    
    </web-bnd>
  2. server.xml 파일에 virtualHost 요소를 추가하십시오. 이름은 애플리케이션에 지정된 이름과 일치되어야 하며, 새 가상 호스트로 라우팅되는 hostAliases를 정의해야 합니다.
    참고: 일치되는 호스트 이름 및 포트는 사용자가 원래 요청한 호스트 이름 및 포트이며, 이는 Liberty가 사용 중인 호스트 및 포트와 일치하거나 일치하지 않을 수 있습니다. 다음 예는 server.xml 파일에 추가된 가상 호스트 요소를 보여줍니다.
    <virtualHost id="proxiedRequests">
        <hostAlias>external.host.name:80</hostAlias>
        <hostAlias>external.host.name:443</hostAlias>
    </virtualHost>

    요청이 프록시에서 수신되는 경우, 이 구성은 독자적으로 프록시의 호스트 및 포트에 대해 작성된 요청을 "proxiedRequests" 가상 호스트로 라우팅합니다.

시작 엔드포인트를 기반으로 액세스 제한

defaultHttpEndpoint를 사용 중인 기본/시스템 애플리케이션에 대한 액세스를 제한하려면 추가 단계를 수행해야 합니다.
  1. 다른 httpEndpoint를 정의하십시오. 다음 예는 다른 httpEndpoint를 보여줍니다.
    <httpEndpoint id="localHostOnly" host="localhost" httpPort="9081" httpsPort="9444"/>

    이 http 엔드포인트는 host="localhost"임을 지정하며, 이는 9081 및 9444가 localhost 인터페이스에서만 노출됨을 의미합니다.

  2. allowFromEndpointRef 속성을 지정하도록 virtualHost 정의를 업데이트하십시오. 이 속성이 지정되면 virtualHost가 지정된 엔드포인트에서만 요청을 허용합니다. 예를 들어 다음과 같습니다.
    <virtualHost id="default_host" allowFromEndpointRef="localHostOnly">
        <hostAlias>*:9081</hostAlias>
        <hostAlias>*:9444</hostAlias>
    </virtualHost>
    
    </virtualHost id="proxiedRequests">
        <hostAlias>*:9080</hostAlias>
        <hostAlias>*:9443</hostAlias>
        <hostAlias>external.host.name:80</hostAlias>
        <hostAlias>external.host.name:443</hostAlias>
    </virtualHost>
    이 구성에서:
    • 이제 default_host 가상 호스트는 역시 localHostOnly 엔드포인트에서 발생한 localhost:9081 및 localhost:9444에서만 방향 지정된 요청을 수락합니다. 포트 9081 및 9444에 대한 기타 요청은 거절됩니다. localhost:9081을 참조하는 호스트 헤더가 있는 defaultHttpEndpoing의 요청은 거부됩니다.
    • 이제 proxiedRequests 가상 호스트는 프록시와 포트 80 또는 443의 외부 호스트 이름을 참조하는 호스트 헤더가 있는 요청과 함께 포트 9080 또는 9443(defaultHttpEndpoint에서 사용하는 기본 포트임)에 발행된 요청을 허용합니다.

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



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