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
}