WEB Server - NGINX LOCATION 블록 사용법 - CentOS 7




    이번 포스팅에서는 LOCATION 블록의 URL 구성과 패턴에 대해서 알아보도록 하겠습니다.







    이전 글 :


    서버와 클라이언트 그리고 HTTP - https://server-talk.tistory.com/291


    WEB Server - NGINX 알아보기 - https://server-talk.tistory.com/297


    WEB Server - NGINX Comfile 설치하기 - https://server-talk.tistory.com/301


    WEB Server - NGINX 서비스 제어 - https://server-talk.tistory.com/302


    WEB Server - NGINX 구성파일 및 기본설정 - CentOS 7 - https://server-talk.tistory.com/303


    WEB Server - NGINX HTTP 설정 - CentOS 7 - https://server-talk.tistory.com/304


    WEB Server - NGINX PHP 5.2 연동하기 - CentOS 7 - https://server-talk.tistory.com/307


    WEB Server - NGINX LOCATION 블록 알아보기 - CentOS 7https://server-talk.tistory.com/310







     LOCATION 블록 사용법



    [LOCATION 패턴 정규식]


    ^ 시작 : 조정 부호 뒤에 문자가 패턴 입니다

    EX) ^s -> s, server


    $ 끝 : 기호 앞에 문자가 패턴 입니다

    EX) r$ -> r, ser, sur


    ( ) 그룹 : 기호 안에 여러 단일 패턴을 사용할 수 있으며, |(또는) 기호로 요소를 묶을 수 있습니다.

    EX) (py) -> py


    | 또는 : 기호는 여러 문자를 |(또는) 기호로 묶을 수 있습니다

    EX) (php|py) -> php, py


    \ 이스케이프 : 뒤에 특수 문자를 인식하도록 처리할 수 있습니다.

    EX) \.php$ -> .php






    LOCATION 기본 문법 : location [=|~|~*|^~|@] [패턴] { . . . }


    location 문법은 위치 조정 부호와 패턴으로 구성됩니다 위치 조정 부호는 특수 기호로 지정하고 패턴은 정규식 문자열을 사용할 수 있습니다







    1. LOCATION 위치 조정 부호


    문법 : location /경로/ { . . . }



    server { server_name server-talk.com; location /admin/ { rewrite ^ server-talk.com redirect; } }


    [LOCATION 폴더 지정]


    admin 폴더 접근하였을 제어를 부분입니다





    2. LOCATION =(등호) 조정 부호


    문법 : location = /[패턴] { . . . }


    server {
    	server_name  server-talk.com;
            location = /admin {
    		   rewrite ^ server-talk.com redirect;
            }
    }
    


    [LOCATION =(등호) 조정 부호 적용되는 경우]


    URI이 정확히 일치해야 되지만 문자열을 전달받을 때는 가능합니다 그리고 정규식을 사용할 수 없습니다




    [LOCATION =(등호)조정 부호 적용되지 않는 경우]


    위 그림과 같이 /admin/ 혹은 admind 는 LOCATION 적용이 되지 않습니다.






    3. LOCATION 조정 부호 생략


    문법 : location /[패턴] { . . . }


    지정된 URI의 패턴으로 시작되어야 하며, 정규식은 사용할 수 없습니다.


    server { server_name server-talk.com; location /admin { rewrite ^ server-talk.com redirect; } }


    [조정 부호 생략 적용되는 경우]






    3. LOCATION ~(물결) 조정 부호


    문법 : location ~ ^/[패턴]$ { . . . }


    ~ 기호는 대소문자를 구분하는 기호이며, ^기호는 시작 기호 $는 끝나는 기호로 사용됩니다


    server {
    	server_name  server-talk.com;
            location ~ ^/admin {
    		   rewrite ^ server-talk.com redirect;
            }
    }
    


    [LOCATION ~ 조정 부호 적용됨]




    [LOCATION ~ 조정 부호 적용되지 않음]







    4. LOCATION ~* 조정 부호


    문법 : location ~* ^/[패턴]$ { . . . }


    ~ 기호는 대소문자를 구분하지 않는 기호이며, ^기호는 시작 기호 $는 끝나는 기호로 사용됩니다



    server {
    	server_name  server-talk.com;
            location ~* ^/admin {
    		   rewrite ^ server-talk.com redirect;
            }
    }
    


    [LOCATION ~* 조정 부호 적용됨]





     

    [LOCATION ~* 조정 부호 적용되지 않음]




    5. LOCATION ^~ 조정 부호




    ※ 주의 : LOCATION 블록은 내부 경로 재설정으로 경로를 지정할 수 있습니다.






     LOCATION 블록 우선순위








    처음 NGINX에서 LOCATION 블록이 1개이면 상관없지만 웹 서비스를 이용하다 보면 1개 이하로 운영하기에는 거의 불가능에 가깝습니다


    이러한 경우 다수의 LOCATION 블록이 정의되어 있을 경우 LOCATION 블록에 정의되어 있는 패턴에 우선순위에 따라 달라지게 되며 우선순위를 사전에 이해하신 후에 적용하시는 것을 권장 드립니다.


    1순위 = : 정규식이 정확하게 일치

    location = /admin { . . . }


    2순위 ^~ : 정규식 앞부분이 일치

    location ^~ /admin { . . . }


    3순위 ~ : 정규식 대/소문자 일치

    location ~ /admin/ { . . . }


    4순위 ~* : 대/소문자를 구분하지 않고 일치

    location ~* .(jpg|png|gif)


    5순위 /  : 하위 일치

    location /admin { . . . }

    Posted by 서버이야기