Nginx에서 다시 쓰기 규칙을 만드는 방법

NGINX 재작성 규칙은 웹 서버에서 URL 요청을 수정하고 관리하는 강력한 방법을 제공합니다. 이러한 규칙은 URL 리디렉션, URL 구조 변경 및 SEO 개선에 필수적입니다. 재작성 규칙을 활용하면 사용자와 검색 엔진이 콘텐츠에 효율적으로 액세스하고 깔끔하고 정리된 URL 구조를 유지할 수 있습니다. 재작성 규칙을 마스터하면 웹 서버의 기능과 유연성을 향상시켜 전반적인 사용자 경험을 향상시킬 수 있습니다.

이 가이드에서는 NGINX에서 다시 쓰기 규칙을 만드는 방법을 설명하고 URL 수정을 효과적으로 처리하도록 서버를 구성하는 데 도움이 되는 명확한 예와 단계를 제공합니다.

NGINX 재작성 규칙: Return 지시어

엔진엑스 return 지시문은 서버 응답을 관리하는 강력한 도구입니다. 주로 클라이언트를 다른 URL로 리디렉션하거나 특정 상태 코드를 보내는 데 사용됩니다. 이 지시어는 특히 웹 사이트를 이동하거나 재구성할 때 트래픽 리디렉션을 단순화합니다. 이는 SEO와 전환 중 사용자 경험 유지에 필수적입니다. 적용을 이해하기 위해 독특한 예를 살펴보겠습니다.

예: 사용자를 이전 페이지에서 새 페이지로 리디렉션한다고 가정해 보겠습니다. NGINX 구성 파일에서 다음을 사용할 수 있습니다. return 다음과 같은 지시어:

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

이 예에서 oldsite.com에 대한 모든 요청은 요청 URI를 유지하면서 newsite.com으로 영구적으로 리디렉션됩니다. 301 상태 코드는 영구 리디렉션을 나타내며 검색 엔진에 색인을 업데이트하도록 알립니다.

NGINX 재작성 규칙: 재작성 지시어

NGINX 재작성 지시문은 추가 처리 전에 다양한 방식으로 요청 URI를 변경하는 데 사용됩니다. 조건에 따라 복잡한 URL 조작을 허용하므로 return 지시문보다 더 다양합니다. 이 기능은 SEO 친화적인 URL을 생성하고 레거시 링크를 관리하는 데 중요합니다.

예: 더 나은 SEO를 위해 동적 URL을 정적으로 보이는 URL로 변환해야 한다고 상상해 보세요. 다음과 같이 rewrite 지시문을 사용할 수 있습니다.

server {
    listen 80;
    server_name example.com;
    location /products {
        rewrite ^/products/([0-9]+)/([0-9]+)$ /product?id=$1&page=$2 last;
    }
}

이 시나리오에서는 example.com/products/123/2와 같은 URL이 내부적으로 example.com/product?id=123&page=2로 다시 작성됩니다. 마지막 플래그는 다시 쓰기 프로세스를 중지하고 새 URI를 다시 평가해야 함을 나타냅니다.

NGINX 재작성 규칙 예

NGINX에서 HTTPS 재작성 규칙 구현

데이터 보안을 위해서는 HTTPS를 통한 보안 연결을 보장하는 것이 중요합니다. NGINX 재작성 지시문은 모든 HTTP 트래픽을 HTTPS로 리디렉션하여 전송 중인 데이터의 보안을 강화할 수 있습니다.

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

이 예에서는 example.com에 대한 HTTP 요청이 HTTPS로 리디렉션되어 암호화된 통신을 보장합니다.

URL 간소화: NGINX 재작성 규칙에서 중복 슬래시 제거

경우에 따라 URL에 중복된 슬래시가 포함되어 혼동이나 오류가 발생할 수 있습니다. NGINX의 재작성 지시문은 이중 슬래시가 있는 URL을 단일 슬래시로 변환하여 이를 효율적으로 처리합니다.

server {
    server_name example.com;
    if ($request_uri ~* "\/\/") {
        rewrite ^/(.*)/$ /$1 permanent;
    }
}

이 규칙은 중복된 슬래시를 제거하여 URL을 간소화합니다.

디렉터리 리디렉션: NGINX 다시 쓰기 규칙 실행

리소스를 재구성하거나 이동할 때 전체 디렉터리를 효율적으로 리디렉션해야 하는 경우가 많습니다. NGINX는 재작성 규칙을 통해 이를 용이하게 합니다.

location ^~ /old-directory/ {
    rewrite ^/old-directory/(.*)$ /new-directory/$1 permanent;
}

이 명령은 /old-directory/의 모든 요청을 /new-directory/로 리디렉션합니다.

NGINX에서 다시 쓰기 규칙을 사용한 쿼리 문자열 조작

쿼리 문자열을 기반으로 URL을 변경하면 사이트를 재설계하는 동안 특히 유용할 수 있습니다. NGINX 재작성 규칙은 이러한 매개변수를 기반으로 동적 URL 재구성을 허용합니다.

if ($args ~ "^id=(.*)&lang=(.*)") {
    set $id $1;
    set $lang $2;
    rewrite ^/page.php$ /page/$lang/$id? permanent;
}

여기서 다시 쓰기 규칙은 복잡한 쿼리 문자열을 보다 간소화된 URL로 변환합니다.

통일된 URL 보장: NGINX 재작성 규칙의 후행 슬래시

후행 슬래시와 같은 URL 구조의 통일성은 사이트 일관성과 SEO에 매우 중요할 수 있습니다.

rewrite ^([^.]*[^/])$ $1/ permanent;

이 규칙은 표준화된 형식을 유지하면서 모든 URL이 슬래시로 끝나도록 합니다.

메서드 기반 리디렉션: NGINX에서 다시 쓰기 규칙 사용

NGINX는 양식 제출을 안전하게 처리하는 데 중요한 POST와 같은 특정 요청 방법을 기반으로 한 리디렉션을 허용합니다.

if ($request_method = POST ) {
    return 301 https://example.com$request_uri;
}

이 명령은 모든 POST 요청을 HTTPS URL로 리디렉션합니다.

NGINX 다시 쓰기 규칙으로 이미지 보호

이미지에 대한 무단 직접 링크를 방지하여 서버 리소스를 보호하십시오.

location ~ .(gif|png|jpe?g)$ {
    valid_referers none blocked ~.google. ~.bing. ~.yahoo. example.com *.example.com;
    if ($invalid_referer) {
        rewrite ^/images/(.*)$ /stop-hotlinking.$1 last;
    }
}

이 설정은 유효하지 않은 리퍼러가 있는 요청을 리디렉션하여 핫링크를 효과적으로 차단합니다.

일관성을 위해 소문자 URL 적용

사이트 전체에서 URL을 소문자로 유지하면 일관성이 향상되고 혼란이 방지됩니다.

location ~ [A-Z] {
    rewrite ^(.*)$ $scheme://$host$1 lowercase;
}

이 명령은 모든 대문자 URL 요소를 소문자로 변환합니다.

URL 구조 변경 처리

웹 사이트를 업데이트하는 동안 트래픽 손실이나 사용자 경험에 해를 끼치지 않고 새로운 URL 구조에 적응하는 것이 중요합니다.

server {
    listen 80;
    server_name example.com;
    
    location ~* ^/oldpath/(.*) {
        rewrite ^/oldpath/(.*)$ /newpath/$1 permanent;
    }
}

사용자와 검색 엔진을 이전 URL에서 새 URL로 리디렉션합니다.

CMS 플랫폼을 위한 깔끔한 URL 만들기

쿼리 문자열을 사용하는 CMS 플랫폼의 경우 NGINX 재작성 규칙을 사용하면 더욱 깔끔하고 SEO 친화적인 URL을 만들 수 있습니다.

location / {
    try_files $uri $uri/ @extensionless-php;
    index index.html index.htm index.php;
}

location ~ \.php$ {
    try_files $uri =404;
}

location @extensionless-php {
    rewrite ^(/[^.]*[^/])$ $1.php last;
}

이 설정은 URL을 더 읽기 쉬운 형식으로 변환하여 잠재적으로 SEO 성능을 향상시킵니다.

결론

NGINX에서 재작성 규칙을 생성하고 구성하면 URL 관리를 최적화하고 SEO를 개선하며 원활한 사용자 경험을 보장할 수 있습니다. 재작성 규칙을 정기적으로 검토하고 테스트하여 예상대로 작동하는지 확인하고 필요에 따라 조정하십시오. NGINX 재작성 규칙을 익히면 NGINX의 모든 기능을 활용하여 보다 동적이고 응답성이 뛰어난 웹 서버를 만들 수 있습니다.

Joshua James

코멘트를 남겨주세요