안티패턴: 동일한 호스트 별칭 및 포트 번호를 사용하는 여러 가상 호스트 정의

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

Apigee Edge에서 라우터는 수신되는 모든 API 트래픽을 처리합니다. 즉, Edge API 프록시에 대한 모든 HTTP 및 HTTPS 요청은 먼저 Edge Router에서 처리됩니다. 따라서 API 프록시 요청은 IP 주소와 라우터의 개방형 포트로 전달되어야 합니다.

가상 호스트를 사용하면 단일 서버 또는 서버 그룹에 여러 도메인 이름을 호스팅할 수 있습니다. Edge의 경우 서버가 에지 라우터에 해당합니다. 라우터에서 가상 호스트를 정의하여 여러 도메인에 대한 요청을 처리할 수 있습니다.

Edge의 가상 호스트는 라우터 포트 및 호스트 별칭과 함께 프로토콜 (HTTP 또는 HTTPS)을 정의합니다. 호스트 별칭은 일반적으로 라우터의 IP 주소에 매핑되는 DNS 도메인 이름입니다.

예를 들어 다음 이미지는 두 개의 가상 호스트 정의가 있는 라우터를 보여줍니다.

이 예시에는 가상 호스트 정의가 두 개 있습니다. 한 쪽은 domainName1 도메인의 HTTPS 요청을 처리하고 다른 한 쪽은 domainName2에서 HTTP 요청을 처리합니다.

API 프록시 요청에서 라우터는 수신 요청의 호스트 헤더 및 포트 번호를 모든 가상 호스트에서 정의한 호스트 별칭 목록과 비교하여 요청을 처리하는 가상 호스트를 결정합니다.

가상 호스트의 샘플 구성은 다음과 같습니다.

샘플 vhost 구성

안티패턴

한 조직의 동일하거나 다른 환경에서 호스트 별칭 및 포트 번호가 동일한 여러 가상 호스트를 정의하면 API 요청을 라우팅할 때 혼란이 발생하고 예기치 않은 오류/동작이 발생할 수 있습니다.

예를 들어 호스트 별칭이 동일한 여러 가상 호스트가 미치는 영향을 설명해 보겠습니다.

동일한 호스트 별칭(예:sandbox and secure 환경의 api.company.abc.com:

별칭이 동일한 가상 호스트

위의 설정을 사용하면 다음 섹션에 설명된 대로 두 가지 시나리오가 발생할 수 있습니다.

시나리오 1 : API 프록시가 가상 호스트 샌드박스 중 하나에 대한 요청만 수락하도록 구성된 경우

<ProxyEndpoint name="default">
  ...
  <HTTPProxyConnection>
    <BasePath>/demo</BasePath>
    <VirtualHost>sandbox</VirtualHost>
  </HTTPProxyConnection>
  ...
</ProxyEndpoint>

이 시나리오에서 클라이언트 애플리케이션이 호스트 별칭 api.company.abc.com를 사용하여 특정 API 프록시를 호출할 때 간헐적으로 404 오류가 메시지와 함께 발생합니다.

Unable to identify proxy for host: secure 

이는 라우터가 sandboxsecure 가상 호스트 모두에 요청을 보내기 때문입니다. 요청이 sandbox 가상 호스트로 라우팅되면 클라이언트 애플리케이션이 성공 응답을 수신합니다. 하지만 요청이 secure 가상 호스트로 라우팅되면 API 프록시가 secure 가상 호스트에서 요청을 허용하도록 구성되지 않았으므로 클라이언트 애플리케이션에 404 오류가 발생합니다.

시나리오 2 : API 프록시가 샌드박스 및 보안 가상 호스트 모두에 대한 요청을 수락하도록 구성되어 있습니다.

<ProxyEndpoint name="default">
  ...
  <HTTPProxyConnection>
    <BasePath>/demo</BasePath>
    <VirtualHost>sandbox</VirtualHost>
    <VirtualHost>secure</VirtualHost>
  </HTTPProxyConnection>
  ...
</ProxyEndpoint>

이 시나리오에서 클라이언트 애플리케이션이 호스트 별칭 api.company.abc.com를 사용하여 특정 API 프록시를 호출하면 프록시 로직에 따라 유효한 응답을 얻게 됩니다.

하지만 이로 인해 API 요청은 두 가상 호스트로 모두 라우팅되고 실제 요청은 하나의 가상 호스트로만 전송되는 것이 목적이므로 애널리틱스에 잘못된 데이터가 저장됩니다.

또한 로깅 정보 및 가상 호스트를 기반으로 하는 기타 데이터에 영향을 줄 수 있습니다.

영향

  1. 404 오류가 표시되는 이유는 API 프록시가 요청을 수락하도록 구성되지 않은 가상 호스트로 API 요청이 라우팅될 수 있기 때문입니다.
  2. 특정 가상 호스트에 대한 요청만 이뤄지는 동안 API 요청은 호스트 별칭을 동일한 모든 가상 호스트로 라우팅하므로 애널리틱스 데이터가 잘못되었습니다.

권장사항

  • 같은 환경이나 조직의 다른 환경에서 호스트 별칭과 포트 번호가 동일한 여러 가상 호스트를 정의하지 마세요.
  • 여러 개의 가상 호스트를 정의해야 하는 경우에는 아래와 같이 가상 호스트마다 서로 다른 호스트 별칭을 사용하세요.

    가상 두 명

추가 자료