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

<ph type="x-smartling-placeholder"></ph> 현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서.
정보

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

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

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

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

이 예시에는 두 개의 가상 호스트 정의가 있습니다. 하나는 서버에서 HTTPS 요청을 도메인 domainName1에 있는 다른 도메인에서는 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을 사용하면 다음과 같은 메시지와 함께 간헐적으로 404 오류가 표시됩니다.

Unable to identify proxy for host: secure 

이는 라우터가 sandboxsecure 모두에 요청을 전송하기 때문입니다. 가상 호스트의 역할을 합니다 요청이 sandbox 가상 호스트로 라우팅되면 클라이언트 애플리케이션은 성공적인 응답을 받게 됩니다. 하지만 요청이 secure 가상 호스트로 라우팅되면 API 프록시가 서버에서 요청을 수락하도록 구성되어 있지 않으므로 secure 가상 호스트

시나리오 2 : API 프록시가 가상 호스트 샌드박스와 보안에 대한 요청을 모두 수락하도록 구성됨

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

이 시나리오에서는 클라이언트 애플리케이션이 호스트 별칭 api.company.abc.com이면 프록시 로직에 따라 유효한 응답을 받게 됩니다.

하지만 이 경우 API 요청이 실제 요청은 하나의 가상 호스트로만 전송하는 것이었습니다.

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

영향

  1. 404 API 요청이 API 프록시가 라우팅되지 않는 가상 호스트로 라우팅될 수 있으므로 발생하는 오류 요청을 수락하도록 구성됩니다
  2. API 요청이 동일한 호스트 별칭이 포함된 경우는 허용되지 않습니다.

권장사항

  • 동일한 환경에서 동일한 호스트 별칭 및 포트 번호로 여러 가상 호스트를 정의하지 마세요. 또는 조직의 다양한 환경에 적용할 수 있습니다
  • 여러 가상 호스트를 정의해야 하는 경우 각 가상 호스트에서 서로 다른 호스트 별칭을 사용하면 됩니다. 해당 가상 호스트의 이름을 지정합니다.

    가상 호스트 2개

추가 자료