nginx location 우선순위 판정기
location 블록들과 요청 URI를 넣으면 nginx가 어느 블록을 고르는지 판정하고 그 이유를 알려줍니다. 접두사는 길이로, 정규식은 순서로 이기는 규칙을 그대로 따릅니다.
설정 파일에서 그대로 붙여 넣어도 됩니다. 순서가 정규식 판정에 영향을 줍니다.
접두사가 더 길고 구체적인데도 정규식이 먼저 걸립니다. ^~ 를 붙여야 접두사가 이깁니다.
이 블록이 걸립니다
location ~ \.png$
정규식 가운데 설정 파일에서 가장 먼저 나오는 "\.png$" 이 걸렸습니다. 뒤쪽 정규식은 보지 않습니다.
nginx 가 고르는 순서
사용 방법
- 1location 블록을 한 줄에 하나씩 넣습니다. 설정 파일에서 그대로 붙여 넣어도 됩니다.
- 2요청 URI를 넣습니다.
- 3어느 블록이 걸리는지와 그 이유를 확인합니다.
자주 묻는 질문
① = 정확 일치가 있으면 바로 결정하고 끝냅니다. ② 접두사 중 가장 긴 것을 기억합니다. ③ 그것에 ^~가 붙어 있으면 정규식을 건너뛰고 그것을 씁니다. ④ 아니면 정규식을 적힌 순서대로 보고 처음 걸리는 것을 씁니다. ⑤ 정규식이 하나도 안 걸리면 ②에서 기억한 접두사를 씁니다.
접두사는 그렇지 않습니다. 적힌 순서와 무관하게 가장 긴 것이 이깁니다. /images/를 위에 적어도 /images/logo/가 아래 있으면 /images/logo/icon.png는 아래쪽이 걸립니다. 반대로 정규식끼리는 적힌 순서대로 보고 처음 걸리는 것이 이깁니다.
정규식이 먼저입니다. 접두사가 아무리 길고 구체적이어도 정규식이 걸리면 그쪽이 이깁니다. 정적 파일 경로처럼 가로채이면 안 되는 곳에는 ^~를 붙이세요. 그러면 정규식을 아예 건너뜁니다.
접두사 location이면서 “여기가 가장 긴 접두사로 뽑히면 정규식은 보지 마라”는 표시입니다. 기호에 ~가 들어 있어 정규식으로 오해하기 쉽지만 정규식이 아닙니다.
경로가 정확히 일치할 때만 걸리며, 걸리면 나머지를 보지도 않고 끝냅니다. 첫 페이지(location = /)처럼 요청이 아주 잦은 경로에 쓰면 탐색 비용을 줄일 수 있습니다.
흔히 쓰는 패턴에서는 같습니다. 다만 nginx는 PCRE를 쓰고 이 도구는 브라우저 정규식을 쓰므로, 원자 그룹이나 소유 수량자 같은 PCRE 전용 문법이 들어가면 결과가 다를 수 있습니다. 그런 경우에는 실제 설정으로 확인하세요.
알아두면 좋은 점
- nginx 공식 문서(ngx_http_core_module의 location)의 판정 규칙을 그대로 옮겼습니다.
- 브라우저 정규식은 PCRE와 완전히 같지 않습니다. PCRE 전용 문법이 들어가면 판정이 달라질 수 있습니다.
- server 블록 선택, rewrite, try_files 등 location 밖의 규칙은 다루지 않습니다.
함께 보면 좋은 도구
마지막 검증: 2026년 8월 30일 · 결과는 참고용 추정치입니다.