4.2. 3scale 표준 정책의 정책 체인
각 API 제품에 대해 정책 체인을 지정할 수 있습니다. 정책 체인은 다음을 수행합니다.
- APIcast가 요청에 적용되는 정책을 지정합니다.
- 이러한 정책에 대한 구성 정보를 제공합니다.
- APIcast가 정책을 적용하는 순서를 결정합니다.
체인에서 정책을 올바르게 정렬하려면 APIcast가 API 소비자 요청에 정책을 적용하는 방법을 이해하는 것이 중요합니다.
4.2.1. APIcast NGINX 단계 3scale 정책을 처리하는 방법
3scale API 게이트웨이 또는 APIcast는 NGINX 프록시 웹 서버를 사용하여 정책을 적용합니다. APIcast가 API 소비자로부터 요청을 수신하면 APIcast는 순서가 지정된 일련의 NGINX 단계에서 요청을 처리합니다. 각 NGINX 단계에서 APIcast는 다음 정책을 적용하여 원래 요청을 수정할 수 있습니다.
- 업스트림 API 정책 체인의 정책입니다. 정책 체인은 순서가 지정된 정책 목록입니다. 기본적으로 업스트림 API의 정책 체인에는 3scale APIcast 정책이 포함됩니다. API 공급자는 3scale 제품의 정책 체인에 정책을 추가할 수 있습니다. APIcast는 업스트림 API 정책 체인의 정책을 해당 업스트림 API로만 전송된 API 소비자 요청에 적용합니다.
- 글로벌 3scale 정책 체인의 정책 API 공급자는 3scale 환경 변수를 설정하여 글로벌 정책 체인을 업데이트할 수 있습니다. APIcast는 글로벌 정책 체인의 정책을 모든 API 소비자 요청에 적용합니다.
동일한 정책이 업스트림 API 정책 체인과 글로벌 정책 체인에 있는 경우 업스트림 API 정책 체인의 정책 구성이 우선합니다.
APIcast는 모든 NGINX 단계에서 필요한 처리를 수행한 후 APIcast는 결과를 업스트림 API로 보냅니다. 결과적으로 원하는 동작을 달성하려면 처리가 API 소비자 요청을 수정할 수 있기 때문에 NGINX 단계 프로세스 정책을 이해하는 것이 중요합니다.
NGINX 단계에 대한 주문 및 설명
APIcast가 API 소비자로부터 요청을 수신하면 APIcast는 업스트림 API의 정책 체인과 글로벌 정책 체인에 정책을 적용하여 요청을 처리합니다. 각 3scale 정책은 하나 이상의 함수를 정의합니다. APIcast는 정렬된 NGINX 단계에서 정책 기능을 실행합니다. 각 단계에서 NGINX는 적용되는 정책에 정의되고 해당 단계에서 실행을 지정하는 모든 함수를 실행합니다. 다음 표에는 정책 기능을 실행하는 NGINX 단계가 나열되어 있습니다. 이 표에 나열되지 않은 추가 NGINX 단계는 정책 체인의 정책 순서에 영향을 받지 않는 처리를 수행합니다.
NGINX 단계 | 이 단계에서의 처리에 대한 설명 |
---|---|
| 요청의 대상 URI를 수정하는 모든 함수를 실행합니다. |
| 요청 시 클라이언트의 권한을 확인하는 모든 함수를 실행합니다. |
|
업스트림 API로 전송할 요청 콘텐츠를 생성합니다. |
| 모든 로드 밸런싱 기능을 실행합니다. |
| 요청 헤더를 처리하는 모든 함수를 실행합니다. |
| 요청 본문을 처리하는 모든 함수를 실행합니다. |
| NGINX가 헤더와 본문에서 함수를 실행한 후 요청을 처리하는 모든 함수를 실행합니다. |
| 요청에 대한 로그 정보를 생성합니다. |
| Prometheus 끝점에서 수신한 모든 데이터에서 작동합니다. |
정책 순서에 의해 영향을 받지 않는 처리를 수행하는 NGINX 단계의 예:
-
APIcast가 시작되면 NGINX는
init
단계와 관련된 작업을 실행합니다. -
APIcast 작업자가 시작되면 NGINX는
init_worker
단계와 관련된 작업을 실행합니다. -
APIcast가 HTTPS 연결을 종료하면 NGINX는
ssl_certificate
단계와 관련된 작업을 실행합니다.
NGINX가 정책 기능을 실행하는 순서
API 공급자는 3scale 제품에 하나 이상의 정책을 추가하여 정책 체인을 구성할 수 있습니다. 각 단계에서 NGINX는 해당 단계에서 실행을 지정하는 정책 함수만 처리합니다. 각 정책 기능은 APIcast가 하나의 NGINX 단계에서 처리하는 동안 기본 동작을 변경하는 방법을 지정합니다. 예를 들어, header_filter
단계에서 NGINX는 header_filter
를 지정하고 요청 헤더에서 작동할 수 있는 함수를 처리합니다. 각 단계에서 NGINX는 정책 체인에 있는 순서대로 관련 기능을 처리합니다.
정책은 컨텍스트
오브젝트를 통해 데이터를 공유할 수 있습니다. 정책은 각 단계에서 컨텍스트
오브젝트를 읽고 수정할 수 있습니다.
NGINX가 정책 기능을 실행하는 순서는 다음과 같습니다.
- 정책 체인에서 정책의 위치
- 특정 정책 기능을 처리하는 NGINX 단계
원하는 동작을 얻으려면 정책 체인의 위치에 따라 정책 적용 결과가 다를 수 있으므로 정책 체인 순서를 올바르게 지정해야 합니다. 다음 다이어그램에서는 정책을 적용하는 순서의 예를 보여줍니다.
이전 그림에서 정책 A 는 정책 체인의 첫 번째입니다. 그러나 NGINX는 정책 B 의 함수를 먼저 처리하는데, 그 기능은 NGINX의 첫 번째 단계인 재작성
단계와 관련되어 있기 때문입니다.
이제 정책 A 및 정책 B 가 포함된 제품의 정책 체인을 고려할 수 있습니다.
정책 A 는 다음을 지정합니다.
-
함수
A1
은액세스
단계에서 실행 -
NGINX가
header_filter
단계에서 실행될 함수A2
-
함수
정책 B 는 다음을 지정합니다.
-
NGINX가
재작성
단계에서 실행되도록 함수B1
-
NGINX가
header_filter
단계에서 실행될 함수B2
-
NGINX가
다음 그림은 NGINX가 제품의 정책 기능을 실행하는 순서를 보여줍니다.
APIcast가 이 제품에서 노출하는 업스트림 API에 대한 액세스 요청을 수신하면 APIcast는 제품의 정책 체인을 확인하고 다음 표에 설명된 대로 기능을 실행합니다.
NGINX 단계 | NGINX가 이 단계에서 실행되는 기능 |
---|---|
|
정책 |
|
정책 A 가 |
|
정책 A 또는 정책 B 는 |
|
정책 A 또는 정책 B 는 |
|
정책 체인은 정책 A 및 정책 B 를 지정합니다. 결과적으로 이 단계에서는 정책 |
| 정책 A 또는 정책 B 는 이 단계에서 실행할 기능을 지정하지 않습니다. |
| 정책 A 또는 정책 B 는 이 단계에서 실행할 기능을 지정하지 않습니다. |
| 정책 A 또는 정책 B 는 이 단계에서 실행할 기능을 지정하지 않습니다. |
이 예에서 정책 A 는 정책 체인에서 처음이지만 정책 B 의 기능은 NGINX가 실행하는 첫 번째 함수입니다. 정책 B 는 NGINX가 다른 단계보다 먼저 제공되는 재작성
단계에서 처리하는 함수 B1
을 지정하기 때문입니다.
다른 예에서는 이 정책 체인을 고려하십시오.
- URL 재작성
- 3scale APIcast (모든 제품에 할당된 기본 정책)
URL 재작성 정책은 요청의 대상 경로를 수정합니다. APIcast는 재작성
단계에서 URL Rewriting 함수를 실행합니다. 3scale APIcast 정책은 재작성
단계에서 APIcast가 실행되는 함수와 APIcast가 세 단계로 실행되는 함수를 정의합니다. URL Rewriting 정책이 먼저 있으면 3scale APIcast 정책은 다시 작성된 경로에 매핑 규칙을 적용합니다. 3scale APIcast 정책이 첫 번째이고 URL Rewriting 정책이 두 번째인 경우 3scale APIcast 정책은 매핑 규칙을 원래 경로에 적용합니다.