엔드포인트 속성 참조

이 페이지는 ApigeeApigee Hybrid에 적용됩니다.

Apigee Edge 문서 보기

이 주제에서는 메시지와 연결 동작을 제어하기 위해 TargetEndpointProxyEndpoint 구성에서 설정할 수 있는 전송 속성에 대해 설명합니다. TargetEndpointProxyEndpoint 구성 옵션의 전체 콘텐츠는 API 프록시 구성 참조를 확인하세요.

TargetEndpoint 전송 속성

TargetEndpoint 구성의 HTTPTargetConnection 요소는 HTTP 전송 속성 집합을 정의합니다. 이러한 속성을 사용하여 전송 수준 구성을 설정할 수 있습니다.

속성은 다음 예시 구성과 같이 TargetEndpoint HTTPTargetConnection 요소에 설정됩니다.

<TargetEndpoint name="default">
  <HTTPTargetConnection>
    <URL>http://mocktarget.apigee.net</URL>
    <Properties>
      <Property name="request.retain.headers">User-Agent,Referer,Accept-Language</Property>
      <Property name="retain.queryparams">apikey</Property>
    </Properties>
  </HTTPTargetConnection>
</TargetEndpoint>

TargetEndpoint 전송 속성 사양

속성 이름 기본값 설명
allow.post.without.content.length false 본문에 콘텐츠가 없는 POST 요청을 전송할 수 있습니다.
allow.put.without.content.length false 본문에 콘텐츠가 없는 PUT 요청을 전송할 수 있습니다.
allow.tls.session.resumption true 대상으로 새로 연결할 때 true(기본값) 클라이언트가 TLS 세션을 재사용하는 경우 TLS 세션을 재사용하지 않으려면 false로 설정합니다. 세션 재사용은 일반적으로 연결 시간이 짧다는 의미이지만 일부 대상에서는 세션 재사용을 지원하지 않거나 재사용이 어려울 수 있습니다.
keepalive.timeout.millis 60000 연결 풀에서 대상 연결의 연결 유휴 상태 제한 시간. 풀의 연결이 지정된 한도를 초과하여 유휴 상태이면 연결이 닫힙니다.
connect.timeout.millis

3000

대상 연결 제한 시간. 연결 제한 시간이 초과되면 Apigee는 HTTP 503 상태 코드를 반환합니다. TargetServer 정의LoadBalancer가 사용되고 시간 초과가 발생하면 HTTP 504 상태 코드가 반환될 수 있습니다.

ignore.allow.header.for.405

true

405 상태 코드를 클라이언트에 다시 전달할 수 있습니다. 플래그를 사용 설정하면 Apigee가 502 상태 코드 대신 405를 반환합니다.

io.timeout.millis 55000

지정된 밀리초 동안 읽을 데이터가 없거나 지정된 밀리초 동안 소켓에서 데이터를 작성할 준비가 되지 않으면 트랜잭션은 제한 시간으로 처리됩니다.

  • 인그레스에서 HTTP 요청을 읽는 동안 시간 초과가 발생하면 408 Request Timeout이 반환됩니다. 대상에 요청을 쓰는 동안 시간 초과가 발생하면 408 Request Timeout이 반환되지 않습니다.
  • HTTP 요청을 작성하거나 HTTP 응답을 읽는 동안 시간 초과가 발생하면 504 Gateway Timeout이 반환됩니다.

자세한 내용은 io.timeout.millis 및 api.timeout을 참조하세요.

supports.http11 true 이것이 true이고 클라이언트가 1.1 요청을 보내면 대상에도 1.1 요청이 전송되고, 그 외의 경우 1.0 요청이 대상으로 전송됩니다.
use.proxy true

이 속성은 Apigee Hybrid에만 적용됩니다.

API 프록시용 전달 프록시 구성의 설명대로 Apigee Hybrid에서 HTTP_PROXY 구성이 포함된 파일을 재정의한 경우 이 속성을 사용하여 프록시가 프록시 구성을 사용하지 않도록 관리하고 제어합니다.

false로 설정하면 API 프록시는 프록시에 설정된 대상 연결의 Apigee Hybrid 재정의 파일에 지정된 HTTP 프록시 구성을 건너뜁니다.

use.proxy.tunneling true

이 속성은 Apigee Hybrid에만 적용됩니다.

이 정책이 true로 설정되어 있고 프록시 구성에서 API 프록시용 전달 프록시 구성의 설명대로 Apigee Hybrid 재정의 파일을 지정하면 대상 연결이 지정된 터널을 사용하도록 설정됩니다. 대상이 TLS/SSL을 사용하는 경우 이 속성은 무시되며 메시지는 항상 터널을 통해 전송됩니다.

request.streaming.enabled false

기본적으로(false) HTTP 요청 페이로드는 버퍼로 읽히며 페이로드에서 작동하는 정책은 예상대로 작동합니다. 페이로드가 버퍼 사이즈(Apigee에서는 10MB)보다 큰 경우 이 속성을 true로 설정할 수 있습니다. true이면 HTTP 요청 페이로드가 버퍼로 읽히지 않습니다. 있는 그대로 대상 엔드포인트에 스트리밍됩니다. 이 경우 TargetEndpoint 요청 흐름의 페이로드에서 작동하는 모든 정책이 우회됩니다. 스트리밍 요청 및 응답도 참조하세요.

response.streaming.enabled false

기본적으로(false) HTTP 응답 페이로드는 버퍼로 읽히며 페이로드에서 작동하는 정책은 예상대로 작동합니다. 페이로드가 버퍼 사이즈(Apigee에서는 10MB)보다 큰 경우 이 속성을 true로 설정할 수 있습니다. true이면 HTTP 응답 페이로드가 버퍼로 읽히지 않습니다. 있는 그대로 ProxyEndpoint 응답 흐름에 스트리밍됩니다. 이 경우 TargetEndpoint 응답 흐름의 페이로드에서 작동하는 모든 정책이 우회됩니다. 스트리밍 요청 및 응답도 참조하세요.

success.codes 해당 사항 없음

기본적으로 Apigee는 HTTP 코드 4XX 또는 5XX를 오류로 처리하고 HTTP 코드 1XX, 2XX, 3XX를 성공한 것으로 취급합니다. 이 속성은 성공 코드를 명시적으로 정의할 수 있습니다. 예를 들어 2XX, 1XX, 505는 모든 100, 200, 505 HTTP 응답 코드를 성공으로 취급합니다.

이 속성을 설정하면 기본값을 덮어씁니다. 따라서 기본 성공 코드 목록에 HTTP 코드 400을 추가하려면 이 속성을 다음과 같이 설정합니다.

<Property name="success.codes">1xx,2xx,3xx,400</Property>

HTTP 코드 400만 성공 코드로 취급하려면 속성을 다음과 같이 설정합니다.

<Property name="success.codes">400</Property>

HTTP 코드 400을 유일한 성공 코드로 설정하면 코드 1xx, 2xx, 3xx가 실패로 처리됩니다.

compression.algorithm 해당 사항 없음 기본적으로 Apigee는 수신된 메시지에 압축 유형 세트(gzip, deflate 또는 none)를 적용합니다. 예를 들어 gzip 압축을 통해 클라이언트에서 요청이 수신되면 Apigee는 gzip 압축을 사용하여 요청을 대상으로 전달합니다. 대상에서 수신한 응답이 deflate를 사용하는 경우 Apigee는 deflate를 사용하여 응답을 클라이언트에 전달합니다. 지원되는 값은 다음과 같습니다.
  • gzip: 항상 gzip 압축을 사용하여 메시지 전송
  • deflate: 항상 deflate 압축을 사용하여 메시지 전송
  • 없음: 항상 압축 없이 메시지 전송

참조: Apigee는 GZIP/deflate 압축 방식의 압축/압축 풀기를 지원하나요?

request.retain.headers.
enabled
true 기본적으로 Apigee는 발신 메시지에 모든 HTTP 헤더를 항상 보관합니다. true로 설정하면 인바운드 요청에 있는 모든 HTTP 헤더가 아웃바운드 요청에 설정됩니다.
request.retain.headers 해당 사항 없음 대상 서비스에 대한 아웃바운드 요청에서 설정해야 하는 요청에서 특정 HTTP 헤더를 정의합니다. 예를 들어 User-Agent 헤더를 패스 스루하려면 request.retain.headers 값을 User-Agent로 설정합니다. 여러 HTTP 헤더는 쉼표로 구분된 목록(예: User-Agent,Referer,Accept-Language)으로 지정됩니다. 이 속성은 request.retain.headers.enabled를 재정의합니다. request.retain.headers.enabledfalse로 설정된 경우 request.retain.headers 속성에 지정된 헤더는 여전히 발신 메시지에 설정됩니다.
response.retain.headers.
enabled
true 기본적으로 Apigee는 발신 메시지에 모든 HTTP 헤더를 항상 보관합니다. true로 설정하면 대상 서비스의 인바운드 응답에 있는 모든 HTTP 헤더가 ProxyEndpoint에 전달되기 전에 아웃바운드 응답에 설정됩니다.
response.retain.headers 해당 사항 없음 ProxyEndpoint로 전달하기 전에 아웃바운드 응답에서 설정해야 하는 응답에서 특정 HTTP 헤더를 정의합니다. 예를 들어 Expires 헤더를 패스 스루하려면 response.retain.headers 값을 Expires로 설정합니다. 여러 HTTP 헤더는 쉼표로 구분된 목록(예: Expires,Set-Cookie)으로 지정됩니다. 이 속성은 response.retain.headers.enabled를 재정의합니다. response.retain.headers.enabledfalse로 설정된 경우 response.retain.headers 속성에 지정된 헤더는 여전히 발신 메시지에 설정됩니다.
retain.queryparams.
enabled
true 기본적으로 Apigee는 아웃바운드 요청에 대한 모든 쿼리 매개변수를 보관합니다. true로 설정하면 인바운드 요청에 있는 모든 쿼리 매개변수가 대상 서비스에 대한 아웃바운드 요청에 설정됩니다.
retain.queryparams 해당 사항 없음 아웃바운드 요청에 설정할 특정 쿼리 매개변수를 정의합니다. 예를 들어 요청 메시지의 쿼리 매개변수 apikey를 포함하려면 retain.queryparamsapikey로 설정합니다. 여러 쿼리 매개변수는 쉼표로 구분된 목록(예: apikey,environment)으로 지정됩니다. 이 속성은 retain.queryparams.enabled를 재정의합니다.

ProxyEndpoint 전송 속성

ProxyEndpoint HTTPTargetConnection 요소는 HTTP 전송 속성 집합을 정의합니다. 이러한 속성을 사용하여 전송 수준 구성을 설정할 수 있습니다.

속성은 다음 예시 구성과 같이 ProxyEndpoint HTTPProxyConnection 요소에 설정됩니다.

<ProxyEndpoint name="default">
  <HTTPProxyConnection>
    <BasePath>/v1/weather</BasePath>
    <Properties>
      <Property name="request.streaming.enabled">true</Property>
    </Properties>
  </HTTPProxyConnection>
</ProxyEndpoint>

요청 헤더

수신되는 HTTP 요청에는 클라이언트가 전송한 HTTP 헤더가 포함되어 있습니다. 이름이 X-Apigee-* 패턴과 일치하는 헤더는 클라이언트가 헤더를 보내는 경우 수신 요청에서 삭제됩니다. 이 이름 패턴은 Apigee에 예약되어 있습니다.

ProxyEndpoint 전송 속성 사양

속성 이름 기본값 설명
X-Forwarded-For false true로 설정하면 가상 호스트의 IP 주소가 아웃바운드 요청에 HTTP X-Forwarded-For 헤더 값으로 추가됩니다.
request.streaming.
enabled
false 기본적으로(false) HTTP 요청 페이로드는 버퍼로 읽히며 페이로드에서 작동하는 정책은 예상대로 작동합니다. 페이로드가 버퍼 사이즈(Apigee에서는 10MB)보다 큰 경우 이 속성을 true로 설정할 수 있습니다. true이면 HTTP 요청 페이로드가 버퍼로 읽히지 않습니다. 있는 그대로 TargetEndpoint 요청 흐름에 스트리밍됩니다. 이 경우 ProxyEndpoint 요청 흐름의 페이로드에서 작동하는 모든 정책이 우회됩니다. 스트리밍 요청 및 응답도 참조하세요.
response.streaming.
enabled
false 기본적으로(false) HTTP 응답 페이로드는 버퍼로 읽히며 페이로드에서 작동하는 정책은 예상대로 작동합니다. 페이로드가 버퍼 사이즈(Apigee에서는 10MB)보다 큰 경우 이 속성을 true로 설정할 수 있습니다. true이면 HTTP 응답 페이로드가 버퍼로 읽히지 않습니다. 있는 그대로 클라이언트에 스트리밍됩니다. 이 경우 ProxyEndpoint 응답 흐름의 페이로드에서 작동하는 모든 정책이 우회됩니다. 스트리밍 요청 및 응답도 참조하세요.
compression.algorithm 해당 사항 없음

기본적으로 Apigee는 수신된 메시지에 압축 유형 세트(gzip, deflate 또는 none)를 적용합니다. 예를 들어 클라이언트가 gzip 압축을 사용하는 요청을 제출하면 Apigee는 gzip 압축을 사용하여 요청을 대상으로 전달합니다. TargetEndpoint 또는 ProxyEndpoint에 이 속성을 설정하여 압축 알고리즘이 명시적으로 적용되도록 구성할 수 있습니다. 지원되는 값은 다음과 같습니다.

  • gzip: 항상 gzip 압축을 사용하여 메시지 전송
  • deflate: 항상 deflate 압축을 사용하여 메시지 전송
  • 없음: 항상 압축 없이 메시지 전송

참조: Apigee는 GZIP/deflate 압축 방식의 압축/압축 풀기를 지원하나요?

api.timeout 해당 사항 없음

개별 API 프록시의 제한 시간 구성

스트리밍이 사용 설정되어 있더라도 504 Gateway Timeout 상태를 이용해 지정한 시간이 지나면 타임아웃되도록 API 프록시를 구성할 수 있습니다.

예를 들어 제한 시간이 180,000밀리초(3분) 후가 되도록 프록시를 구성하려면 HTTPProxyConnection에 다음 속성을 추가합니다.

<Property name="api.timeout">180000</Property>

이 속성은 변수로 설정할 수 없습니다.

자세한 내용은 io.timeout.millis 및 api.timeout을 참조하세요.

HTTPHeader.allowDuplicates 해당 사항 없음

이 설정을 사용하여 특정 헤더에 헤더 중복을 허용할 수 있습니다.

<HTTPProxyConnection>
  <Properties>
     <Property name="HTTPHeader.allowDuplicates">Content-Type,Authorization</Property>
  </Properties>
</HTTPProxyConnection>
HTTPHeader.multiValued 해당 사항 없음

이 설정을 사용하여 특정 헤더에 헤더 중복을 허용할 수 있습니다.

<HTTPProxyConnection>
  <Properties>
    <Property name="HTTPHeader.multiValued">Content-Type,Authorization</Property>
  </Properties>
</HTTPProxyConnection>

io.timeout.millis 및 api.timeout 설정

io.timeout.millisapi.timeout 작업은 서로 관련이 있습니다. API 프록시에 대한 모든 요청에서 다음을 실행합니다.

  1. 인그레스(내부 부하 분산기라고도 함)는 제한 시간 값을 메시지 프로세서로 전송합니다. 이 제한 시간 값의 기본값은 300초이며 구성될 수 없습니다.
  2. 그런 다음 메시지 프로세서가 api.timeout를 설정합니다.
    1. api.timeout이 프록시 수준에서 설정되지 않은 경우 인그레스에서 설정한 제한 시간을 사용합니다.
    2. api.timeout이 프록시 수준에서 설정된 경우 메시지 프로세서에서 인그레스 제한 시간이나 api.timeout 값보다 작은 값으로 설정합니다.
  3. api.timeout 값은 API 요청에서 응답에 이르기까지 API 프록시가 실행되어야 하는 최대 시간을 지정합니다.

    API 프록시의 각 정책이 실행된 후 또는 메시지 프로세서가 요청을 대상 엔드포인트로 보내기 전에 메시지 프로세서는 api.timeout(요청 시작 시점부터 경과된 시간)을 계산합니다.

    이 값이 0보다 작으면 요청을 처리하는 최대 시간이 만료된 후 메시지 프로세서가 504 Gateway Timeout를 반환합니다.

  4. io.timeout.millis 값은 대상 엔드포인트가 응답해야 하는 최대 시간을 지정합니다.

    메시지 프로세서는 대상 엔드포인트에 연결하기 전에 api.timeout(요청 시작 시점부터 경과된 시간) 및 io.timeout.millis 중에서 작은 값을 확인합니다. 그런 다음 io.timeout.millis를 해당 값으로 설정합니다.

    HTTP 요청을 쓰거나 HTTP 응답을 읽는 동안 시간 초과가 발생하면 504 Gateway Timeout이 반환됩니다.