티스토리 뷰

728x90

 

✅ 가로채기 (Interception)란?

요청 흐름 가로채기란,
원래 클라이언트가 API 서버로 보내는 HTTP 요청을

  • 중간에
  • APISIX가 먼저 받고
  • 내용을 "가공하거나 따로 복제해서" 다른 데로 보내는 것을 말합니다.

→ 원래 목적지로 가는 걸 막거나 수정하는 건 아님.
→ "보내면서" 또는 "보내기 전에" 추가 행동을 하는 거예요.

방법 1. APISIX 기본 Lua 플러그인 이용 (serverless-pre-function)

  • 요청이 들어올 때
  • ngx.req.get_body_data() 같은 걸 써서
  • 요청 바디나 헤더를 읽은 다음
  • 그걸 Kafka 또는 다른 HTTP 서버로 POST 보내는 Lua 코드 삽입

Lua 플로우

-- 요청 바디 읽기
local body = ngx.req.get_body_data()

-- Kafka Producer API (또는 다른 중계 서버)로 HTTP 요청 보내기
local http = require("resty.http")
local httpc = http.new()

local res, err = httpc:request_uri("http://your-kafka-producer-api", {
    method = "POST",
    body = body,
    headers = {
        ["Content-Type"] = "application/json",
    }
})

정리:

  • 요청 들어올 때 데이터 읽고
  • 그걸 원하는 곳에 추가로 전송하는 것
  • 원래 API 서버 호출은 그대로 진행

방법 2. APISIX Plugin Phase Hook 사용

APISIX는 요청 흐름을 여러 단계로 나눕니다:

rewrite 요청이 백엔드로 가기 전에 수정
access 접근 제어 전에 실행 (여기서 가로채는 게 일반적)
balancer 백엔드 서버 선택
header_filter 백엔드 응답 헤더 수정
body_filter 백엔드 응답 바디 수정
log 요청 완료 후 로그 처리

가로채기는 주로 rewrite나 access phase에 이뤄집니다.

→ access phase에서 요청 본문을 읽고, Kafka로 추가 발송하고, 원래 API 호출도 진행.


 

원래 가로채기 추가 후

요청 → 백엔드 요청 → APISIX → (Kafka로도 보내고) → 백엔드
단순 중계 복제 및 추가 전송 + 중계

 

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함