Nginx에서 URL을 리디렉션하는 방법

NGINX는 높은 트래픽 로드를 처리하고 정적 콘텐츠를 효율적으로 제공하는 능력으로 유명한 고성능 웹 서버 및 역방향 프록시 서버입니다. 강력한 기능 중 하나는 웹 트래픽 관리, SEO 개선 및 원활한 사용자 경험 보장을 위한 중요한 기능인 URL 리디렉션 기능입니다. NGINX의 URL 리디렉션은 HTTP를 HTTPS로 리디렉션, URL 별칭 생성, 사이트 마이그레이션 관리 등 다양한 목적으로 사용될 수 있습니다.

다음 가이드에서는 Linux 또는 Unix 계열 시스템에서 명령줄 터미널을 사용하여 NGINX에서 URL을 리디렉션하는 방법을 보여줍니다. NGINX의 강력하고 유연한 리디렉션 기능을 구성하면 특정 요구 사항에 맞게 웹 트래픽을 효율적으로 관리하고 제어할 수 있습니다.

NGINX에서 리디렉션 URL 반환

NGINX는 URL 리디렉션 설정을 위한 두 가지 주요 지시문을 제공합니다. return 그리고 rewrite. 이러한 지시문은 웹 트래픽을 한 URL에서 다른 URL로 전달하는 데 중요합니다.

NGINX의 301 리디렉션

301 리디렉션은 영구 리디렉션에 필수적입니다. 일반적으로 웹사이트나 웹페이지가 새 URL로 영구적으로 이동되었을 때 사용됩니다. NGINX에서 301 리디렉션을 설정하려면 return 301 상태 코드를 지정하는 서버 블록 내의 지시문. 이렇게 하면 사용자와 검색 엔진이 모두 새 URL로 연결됩니다.

301 리디렉션의 예

트래픽을 다음에서 리디렉션해야 한다고 생각하세요. oldsite.com 에게 newsite.com. NGINX 구성은 다음과 같습니다.

server {
    listen 80;
    server_name oldsite.com;
    location / {
        return 301 $scheme://www.newsite.com$request_uri;
    }
}

이 구성은 다음에서 들어오는 모든 요청을 효율적으로 리디렉션합니다. oldsite.com 에게 www.newsite.com, 원래 요청 URI를 유지합니다. 이 간단하면서도 강력한 방법을 사용하면 사용자와 검색 엔진이 새 웹사이트 위치를 찾을 수 있습니다.

NGINX의 302 리디렉션

영구 리디렉션과 달리 302 리디렉션은 임시 리디렉션 시나리오에 사용됩니다. 예를 들어 웹 사이트 유지 관리 중이나 페이지가 일시적으로 이동되는 경우 일시적으로 사용자를 리디렉션할 수 있습니다.

302 리디렉션의 예

설명을 위해 다음에서 트래픽을 리디렉션한다고 가정해 보겠습니다. temp.com 에게 another-site.com 일시적으로. NGINX 설정은 다음과 같습니다:

server {
    listen 80;
    server_name temp.com;
    location / {
        return 302 $scheme://www.another-site.com$request_uri;
    }
}

이 구성에서는 모든 트래픽이 temp.com 일시적으로 다음으로 경로가 변경되었습니다. www.another-site.com. 302 상태 코드를 사용하면 이 리디렉션이 일시적임을 나타내며 이는 단기 변경 중에 SEO 무결성을 유지하는 데 중요합니다.

NGINX에서 지시문 리디렉션 URL 다시 작성

그만큼 rewrite NGINX의 지시문은 복잡한 URL 리디렉션 시나리오를 처리하기 위한 강력한 도구입니다. 직설적인 것과는 다르게 return 지령, rewrite 정규식과 더 넓은 범위의 변수를 활용합니다. 이러한 유연성을 통해 특히 단순한 리디렉션이 불충분한 시나리오에서 URL이 리디렉션되는 방식을 정밀하게 제어할 수 있습니다.

파일 확장자 기반 리디렉션

특정 파일 형식 리디렉션

일반적인 요구 사항은 특정 파일 형식을 리디렉션하는 것입니다. 예를 들어, 모두 리디렉션 .jpg 새 디렉터리에 대한 이미지 요청:

server {
    listen 80;
    server_name www.example.com;
    location ~* \.jpg$ {
        rewrite ^/images/(.*)\.jpg$ /new-images/$1.jpg permanent;
    }
}

이 구성에서는 .jpg 파일을 /images/ 디렉토리가 다음으로 리디렉션됩니다. /new-images/. 정규 표현식 \.(jpg)$ 다음으로 끝나는 URL만 보장합니다. .jpg 영향을 받다.

URI 기반 동적 리디렉션

URI 조작을 통한 리디렉션

또 다른 일반적인 시나리오는 URI 구성 요소를 기반으로 URL을 동적으로 리디렉션하는 것입니다. 제품 카테고리에 따라 사용자를 리디렉션하는 것을 고려해보세요.

server {
    listen 80;
    server_name www.example.com;
    location ~* ^/category/(.*)$ {
        rewrite ^/category/(.*)$ /new-category/$1 permanent;
    }
}

이 설정은 다음의 모든 URL을 캡처합니다. /category/ 아래의 해당 URL로 리디렉션됩니다. /new-category/, URI의 뒷부분을 유지합니다.

레거시 URL 구조 처리

이전 URL을 새 패턴으로 리디렉션

웹사이트는 시간이 지남에 따라 URL 구조를 변경하는 경우가 많습니다. 그만큼 rewrite 지시문은 이러한 전환을 원활하게 처리할 수 있습니다.

server {
    listen 80;
    server_name www.example.com;
    location ~* ^/old-structure/(.*)$ {
        rewrite ^/old-structure/(.*)/info$ /new-structure/$1/details permanent;
    }
}

이 예에서는 이전 패턴(/old-structure/[identifier]/info)을 새로운 패턴(/new-structure/[identifier]/details).

지리적 기반 리디렉션

지리적 위치를 기준으로 사용자 리디렉션

NGINX는 또한 다음을 활용하여 지리적 위치를 기반으로 리디렉션을 처리할 수 있습니다. $geoip_country_code 변하기 쉬운:

server {
    listen 80;
    server_name www.example.com;
    if ($geoip_country_code = "US") {
        rewrite ^/(.*)$ /us/$1 permanent;
    }
}

이 구성에서는 미국 방문자가 웹 사이트의 미국 관련 섹션으로 리디렉션됩니다. 이 접근 방식을 사용하려면 NGINX에서 GeoIP 모듈을 활성화해야 합니다.

NGINX의 로드 밸런싱 리디렉션 URL

NGINX는 로드 밸런싱 및 리디렉션 기능을 통해 네트워크 트래픽을 효율적으로 관리하는 데 탁월합니다. NGINX의 로드 밸런싱에는 들어오는 트래픽을 여러 서버에 분산시키는 작업이 포함됩니다. 이 전략은 단일 서버의 과부하를 방지하여 시스템의 전반적인 성능과 안정성을 향상시킵니다.

로드 밸런싱을 위한 NGINX 구성

로드 밸런싱 설정

기본 로드 밸런싱

다음은 로드 밸런싱을 위해 NGINX를 구성하는 방법의 예입니다.

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }
    
    server {
        listen 80;
        
        location / {
            proxy_pass http://backend;
        }
    }
}

이 구성에서 NGINX는 역방향 프록시 역할을 하며 들어오는 요청을 지정된 세 개의 백엔드 서버(backend1.example.com, backend2.example.com 및 backend3.example.com) 중 하나에 고르게 분산합니다. 이 설정은 효율적인 요청 처리를 보장하여 빠른 응답 시간을 유지하고 서버 가동 중지 시간을 최소화하므로 트래픽이 많은 웹 사이트에 매우 중요합니다.

상태 확인을 통한 고급 로드 밸런싱

안정성 향상을 위해 백엔드 서버에서 상태 확인을 수행하고 건강한 서버에만 트래픽을 보내도록 NGINX를 구성할 수 있습니다.

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
        
        # Enable health checks
        health_check;
    }
    
    server {
        listen 80;
        
        location / {
            proxy_pass http://backend;
        }
    }
}

이 설정을 사용하면 NGINX는 백엔드 서버의 상태를 주기적으로 확인하고 로드 밸런싱 풀에서 다운된 모든 서버를 제외합니다. 이렇게 하면 트래픽이 요청을 처리할 수 있는 서버로만 전달되어 전반적인 안정성이 향상됩니다.

로드 밸런싱 모범 사례

세션 지속성 구현(고정 세션)

세션 지속성이 필요한 애플리케이션의 경우 고정 세션을 사용하여 사용자가 동일한 백엔드 서버로 일관되게 라우팅되도록 할 수 있습니다.

http {
    upstream backend {
        ip_hash;
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }
    
    server {
        listen 80;
        
        location / {
            proxy_pass http://backend;
        }
    }
}

이 구성에서는 ip_hash 지시문은 동일한 클라이언트 IP 주소의 요청이 항상 동일한 백엔드 서버로 라우팅되도록 보장하여 세션 일관성을 유지합니다.

SSL 종료 구성

보안 통신을 위해서는 로드 밸런서에서 SSL을 종료하는 것이 가장 좋습니다.

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }
    
    server {
        listen 443 ssl;
        ssl_certificate /etc/nginx/ssl/nginx.crt;
        ssl_certificate_key /etc/nginx/ssl/nginx.key;
        
        location / {
            proxy_pass http://backend;
        }
    }
}

이 설정에서 NGINX는 SSL 종료를 처리하여 들어오는 SSL 요청을 해독하고 이를 일반 HTTP 요청으로 백엔드 서버에 전달합니다. 이는 백엔드 서버에서 SSL 처리를 오프로드하여 성능을 향상시킵니다.

결론

이 가이드에서는 URL 리디렉션, 로드 밸런싱 등에 NGINX를 사용하는 실용성을 살펴보았습니다. 우리는 기본 301 및 302 리디렉션 설정부터 복잡한 재작성 규칙 및 효율적인 로드 밸런싱 구성 구현에 이르기까지 다양한 기술을 다루었습니다. NGINX의 강점은 유연성과 성능에 있으며, 소규모든 대규모든 모든 웹사이트를 관리하는 데 매우 유용한 도구입니다. 이러한 개념을 적용하면서 계속 실험하고 최적화하세요. NGINX는 웹 관리 도구 중 강력한 도구이므로 이를 사용하여 사이트를 원활하고 효율적으로 운영하세요.

Joshua James

코멘트를 남겨주세요