본문 바로가기

잡다

[nginx] Location Priority

 

Configuring NGINX and NGINX Plus as a Web Server | NGINX Plus

Configuring NGINX and NGINX Plus as a Web Server Configure NGINX and NGINX Plus as a web server, with support for virtual server multi-tenancy, URI and response rewriting, variables, and error handling. This article explains how to configure NGINX Open Sou

docs.nginx.com

 

location directive에 대한 modifier 지정 방법은 크게 4가지가 존재한다.

  1.  = : exact matching. location과 URI가 일치하면 즉시 반환
  2. ^~ : prefix string. ^~ modifier 붙은 prefix string이 longest matching prefix string이면 바로 반환 
  3. ~ , ~* : location을 regex로 처리. ~ 는 대소문자를 구분하고, ~*은 대소문자 구분 안함
  4.  no modifier : prefix string 매칭 시도

사용자가 입력한 URI을 검사하는 순서는 다음과 같다.

  1. prefix string을 검사하며 longest string을 찾는다.
    1. = modifier이 지정된 문자열과 매칭되면 탐색을 중지하고 즉시 해당 경로로 연결한다.
      ex) location = /foo/bar : 사용자 URI = /foo/bar이면 바로 연결
    2. prefix string을 모두 순회하여 얻은 longest matching prefix string에 ^~ modifier가 지정되어 있으면 regex을 검사하지 않고 바로 연결한다.
      ex) location ^~ /foo/bar : 사용자 URI = /foo/bar/taz 일때 longest matching된다면 regex 검사 없이 바로 연결
    3. 위 상황에 해당하지 않으면 longest matching prefix string을 임시로 저장한다.
  2. regex을 검사한다. regex가 매칭되면 그 이상 평가하지 않고 바로 연결한다.
  3. 아무 regex도 매칭되지 않으면 이전에 저장해 둔 longest matching prefix string 경로로 연결한다.