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

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
	}
}

더 알아보기 (Learn more)