본문 바로가기
WIKI 기술 지식 베이스

invoke

원문 보기 위키 갱신

출처: Caddy 공식 문서

본문

⚠️ 실험적 기능

명명된 라우트(named route)를 호출해요.

이 지시문은 고유한 인메모리 상태를 가지거나, 로드 시 프로비저닝 비용이 큰 HTTP 핸들러 지시문과 함께 사용할 때 유용해요. 사이트가 수백 개 이상이라면 명명된 라우트를 호출해서 메모리 사용량을 줄이는 데 도움이 될 수 있어요.

import와 달리 invoke는 인자를 지원하지 않아요. 대신 vars로 명명된 라우트 안에서 사용할 변수를 정의하면 돼요.

문법

invoke [<matcher>] <route-name>
  • 은 호출할 라우트의 이름이에요. 라우트를 찾을 수 없으면 오류가 발생해요.

invoke는 명명된 라우트 안에서 다른 명명된 라우트를 호출하는 데에도 사용할 수 있어요.

예제

여러 사이트에서 재사용할 수 있도록 reverse_proxy를 담은 명명된 라우트를 정의하고, 모든 사이트에서 동일한 인메모리 로드 밸런싱 상태를 재사용하는 예시예요:

&(app-proxy) {
	reverse_proxy app-01:8080 app-02:8080 app-03:8080 {
		lb_policy least_conn
		health_uri /healthz
		health_interval 5s
	}
}

# 루트 도메인에서는 /app 하위 경로를 통해 앱에 접근하고,
# 그 외에는 메인 사이트를 제공합니다.
example.com {
	handle_path /app* {
		invoke app-proxy
	}

	handle {
		root /srv
		file_server
	}
}

# 앱은 서브도메인으로도 접근할 수 있습니다.
app.example.com {
	invoke app-proxy
}

더 알아보기 (Learn more)