NGINX Location 매칭 가이드

이번 포스트에서는 NGINX Location 블록별 요청 URI 가이드에 대한 설명입니다. NGINX는 웹 서버 소프트웨어로, 높은 성능과 안정성을 자랑합니다. 다양한 기능 중에서도 Location 블록은 특정 URI에 대한 요청을 처리하는 데 매우 중요한 역할을 합니다. 아래 자세한 가이드를 확인하려 상황에 맞는 요청 URI Location 블록을 사용하세요.

목차

1. NGINX란?
2. Location 블록이란?
3. 다양한 Location 블록 유형
4. Location 블록의 중요성
5. Location 예시

5-1. location /test
5-2. location /test/
5-3. location ~* /test
5-4. location @test
5-5. location = /test
6. 결론

1. NGINX란?

NGINX는 고성능 웹 서버이자 리버스 프록시 서버로, 정적 파일 제공, 로드 밸런싱, 캐싱 등 다양한 기능을 제공합니다. 특히, 비동기 이벤트 기반 아키텍처를 통해 높은 동시 접속 처리 능력을 자랑합니다. 이러한 특성 덕분에 많은 대형 웹사이트에서 NGINX를 사용하고 있습니다.

2. NGINX Location 블록이란?

Location 블록은 NGINX 설정 파일에서 특정 URI 패턴에 대한 요청을 처리하는 방법을 정의하는 블록입니다. 이 블록을 통해 웹 서버는 클라이언트의 요청을 적절한 리소스나 서비스로 라우팅할 수 있습니다. 예를 들어, 특정 URI에 대한 요청을 다른 서버로 프록시하거나, 정적 파일을 제공하는 등의 작업을 수행할 수 있습니다.

3. 다양한 NGINX Location 블록 유형

NGINX에서 사용할 수 있는 Location 블록의 유형은 여러 가지가 있습니다. 각 유형은 요청 URI을 매칭하는 방식이 다릅니다. 아래는 Location 블록 예시입니다.

  1. location /test – /test로 시작하는 모든 요청을 처리합니다.
  2. location /test/ – /test/로 시작하는 요청을 처리하며, 하위 경로도 포함됩니다.
  3. location ~ /test – 정규 표현식을 사용하여 /test와 매칭되는 요청을 처리합니다.
  4. location ~* /test – 대소문자를 구분하지 않고 정규 표현식으로 매칭합니다.
  5. location @test – 내부 요청을 처리하는 데 사용됩니다.
  6. location = /test – 정확히 /test와 일치하는 요청만 처리합니다.

이러한 다양한 Location 블록을 통해 NGINX는 복잡한 요청 처리 로직을 구현할 수 있습니다.

4. NGINX Location 블록의 중요성

Location 블록은 웹 서버의 성능과 보안에 큰 영향을 미칩니다. 올바른 Location 블록을 설정하면 요청 처리 속도를 높이고, 불필요한 리소스 소모를 줄일 수 있습니다. 또한, 특정 URI에 대한 접근을 제한하거나, 보안 설정을 강화하는 데도 유용합니다.

5. NGINX Location 예시

3섹션에서 설명한 location 예시를 직접 확인합니다.

5-1. location /test

server {
        listen 80;
        
        location /test {
                root /usr/share/nginx/html;
                index index.html;
        }
}

위와 같이 구성할 경우 URI가 /test인 요청을 처리합니다.

여기서 http://example.com/test 로 요청을 하게 되면 http://example.com/test/로 리다이렉트됩니다.

# curl localhost:1234/test -I

HTTP/1.1 301 Moved Permanently
Server: nginx/1.27.2
Date: Mon, 10 Mar 2025 06:23:54 GMT
Content-Type: text/html
Content-Length: 169
Location: http://localhost:1234/test/
Connection: keep-alive

5-2. location /test/

server {
        listen 80;
        
        location /test/ {
                root /usr/share/nginx/html;
                index index.html;
        }
}

위와 같이 구성할 경우 /test/로 끝나는 URI 또는 그 하위 경로를 매칭합니다. 슬래시(/)가 명시적으로 포함되므로 더 구체적인 매칭을 요구합니다.

5-3. location ~* /test

server {
        listen 80;
        
        location ~* /test {
                root /usr/share/nginx/html;
                index index.html;
        }
}

정규 표현식을 사용한 매칭입니다. ~*는 대소문자를 구분하지 않는 정규식을 의미합니다. 또한 정규식은 우선순위가 높아, 일반 접두사 매칭보다 먼저 평가됩니다.

리눅스 파일 시스템은 대소문자를 구분함을 유의하십시오.

5-4. location @test

server {
        listen 80;
        
        location @test {
                root /usr/share/nginx/html;
                index index.html;
        }
}

@로 시작하는 경로는 named location이라고 하며, 클라이언트와 직접적으로 매칭되지 않고, NGINX 설정 내에서 내부적으로 참조될 때 사용합니다.

5-5. location = /test

server {
        listen 80;
        
        location = /test {
                root /usr/share/nginx/html;
                index index.html;
        }
}

=는 정확한 매칭 수정자를 의미합니다. 따라서 URI가 정확히 /test인 경우에만 해당 location 블록이 적용됩니다.

6. 결론

NGINX에서는 사용 목적에 따라 다양한 Location 블록을 설정할 수 있습니다. 정규식, 접두사, 우선 접두사 등을 사용하여 요청 패턴과 목적에 맞춰 선택할 수 있습니다.

이 포스트에 작성된 location 뿐만 아니라 다양한 정규식을 사용하여 더욱 세분화할 수 있습니다.

목적에 맞는 location 블록을 구성하여 효율적으로 요청을 처리하고, 다양한 요구 사항을 충족해보세요.

NGINX 상업용 버전을 직접 사용해 보시려면 30일 무료 평가판을 신청하거나 NGINX STORE에 연락하여 논의하십시오.

NGINX STORE를 통한 솔루션 도입 및 기술지원 무료 상담 신청

* indicates required