handle_path 지시문
handle_path 지시문 (경로 접두사 제거와 처리)
handle_path 지시문은 handle 지시문과 동일하게 동작하지만, 조건에 맞는 경로 접두사를 자동으로 제거해요. uri strip_prefix를 암시적으로 사용해요.
출처: Caddy 공식 문서
본문
handle 지시문과 동일하게 동작하지만, 조건에 맞는 경로 접두사를 제거하기 위해 uri strip_prefix를 암시적으로 사용해요.
특정 경로에 일치하는 요청을 처리하면서 그 경로를 요청 URI에서 제거하는 작업은 흔해서, 편의를 위해 전용 지시문이 있어요.
문법 (Syntax)
handle_path <path_matcher> {
<directives...>
}
- **<directives...>**는 한 줄에 하나씩 나열하는 HTTP 핸들러 지시문 또는 지시문 블록 목록이에요.
handle_path블록 밖에서 쓰는 것과 동일해요.
경로 matcher는 하나만 받으며 필수예요. handle_path에서는 이름 있는 matcher를 쓸 수 없어요.
제거 후 남는 경로는 항상 /로 시작해요. 예를 들어 handle_path /prefix*를 쓰면 /prefix 요청은 경로 /로 처리돼요.
예시 (Examples)
이 설정:
handle_path /prefix/* {
...
}
👆은 사실상 아래와 같지만, handle_path 형태 👆이 조금 더 간결해요:
handle /prefix/* {
uri strip_prefix /prefix
...
}
handle_path와 handle이 상호 배타적으로 쓰인 전체 Caddyfile 예시예요. 다만 하위 폴더 문제(subfolder problem)를 주의해야 해요.
example.com {
# API를 서빙하면서 /api 접두사를 제거
handle_path /api/* {
reverse_proxy localhost:9000
}
# 정적 사이트 서빙
handle {
root /srv
file_server
}
}