도구스개발

nginx location 우선순위 판정기

location 블록들과 요청 URI를 넣으면 nginx가 어느 블록을 고르는지 판정하고 그 이유를 알려줍니다. 접두사는 길이로, 정규식은 순서로 이기는 규칙을 그대로 따릅니다.

설정 파일에서 그대로 붙여 넣어도 됩니다. 순서가 정규식 판정에 영향을 줍니다.

접두사가 더 길고 구체적인데도 정규식이 먼저 걸립니다. ^~ 를 붙여야 접두사가 이깁니다.

이 블록이 걸립니다

location ~ \.png$

정규식 가운데 설정 파일에서 가장 먼저 나오는 "\.png$" 이 걸렸습니다. 뒤쪽 정규식은 보지 않습니다.

/images/접두사일치 8자
~ \.png$정규식 (대소문자 구분)선택됨

nginx 가 고르는 순서

1. = 정확 일치걸리면 바로 끝. 나머지는 보지 않습니다
2. 접두사 중 가장 긴 것적힌 순서가 아니라 길이로 이깁니다
3. 그것이 ^~ 면정규식을 건너뛰고 그것을 씁니다
4. 정규식적힌 순서대로 보고 처음 걸리는 것
5. 그래도 없으면2번에서 기억해 둔 접두사
접두사끼리는 길이로, 정규식끼리는 순서로 이깁니다. 이 둘이 뒤섞여 헷갈립니다. /images/ 를 위에 적어도 /images/logo/ 가 아래 있으면 아래쪽이 이기지만, 정규식은 더 정확한 것이 아래 있어도 위의 헐거운 것이 먼저 가로챕니다.
정규식은 접두사보다 먼저입니다. 접두사가 아무리 길고 구체적이어도 정규식이 걸리면 그쪽이 이깁니다. 정적 파일 경로처럼 정규식에 가로채이면 안 되는 곳에는 ^~ 를 붙이세요 — 그러면 정규식을 아예 건너뜁니다.
여기서 쓰는 정규식은 브라우저의 것입니다. nginx 는 PCRE 를 쓰므로 원자 그룹 (?>…), 소유 수량자 a*+, 재귀 같은 문법은 흉내 낼 수 없습니다. 흔히 쓰는 패턴에서는 결과가 같지만 그런 문법이 들어가면 판정을 믿지 말고 실제 설정으로 확인하세요.

사용 방법

  1. 1location 블록을 한 줄에 하나씩 넣습니다. 설정 파일에서 그대로 붙여 넣어도 됩니다.
  2. 2요청 URI를 넣습니다.
  3. 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일 · 결과는 참고용 추정치입니다.