Nginx에서 / 경로 처리 차이

박우진·2025년 3월 24일

Network/Server

목록 보기
10/12

🔍 Nginx에서 /api/api/ 경로 처리의 차이점

1️⃣ /api/api/ 경로 차이

Nginx에서는 경로에 슬래시(/)의 유무에 따라 경로 매칭 방식이 달라집니다. 하지만 실제로는 경로가 비슷하게 처리되는 경우가 많습니다. 여기에 대한 설명을 해볼게요.

  • /api: 경로 뒤에 슬래시(/)가 없으면 /api시작하는 모든 요청을 처리합니다.
  • /api/: 경로 뒤에 슬래시(/)가 있으면 정확히 /api/로 시작하는 요청만 처리합니다.

즉, /api//api는 비슷하게 동작하지만, Nginx는 슬래시가 있는지 없는지를 구분하여 경로를 매칭합니다.

2️⃣ proxy_pass 뒤에 /를 붙였을 때와 안 붙였을 때 차이

proxy_pass는 요청을 전달할 백엔드 서버의 URL을 설정하는 지시어입니다. 이때 뒤에 슬래시(/)를 붙였을 때와 붙이지 않았을 때의 차이가 중요합니다.

proxy_pass 뒤에 /를 붙일 때

  • 경로를 그대로 유지하고 백엔드로 전달합니다.
  • 예시:
    location /api/ {
        proxy_pass http://backend/;
    }
    • 요청: /api/posts
    • 전달: http://backend/api/posts

proxy_pass 뒤에 /를 붙이지 않을 때

  • /api 경로를 제거하고 백엔드에 전달합니다.
  • 예시:
    location /api/ {
        proxy_pass http://backend;
    }
    • 요청: /api/posts
    • 전달: http://backend/posts (즉, /api 경로가 제거됨)

🔧 실제 예시와 설정 방법

🚀 location /api {} 예시

/api 경로로 시작하는 모든 요청을 처리하려면 location /api {}를 사용합니다.

location /api {
    proxy_pass http://backend;
}

✔️ 이 설정은 /api로 시작하는 모든 요청을 처리합니다:

  • /apihttp://backend/
  • /api/postshttp://backend/posts
  • /api/users/123http://backend/users/123

🚫 location /api/ {} 예시

/api/ 경로로 정확히 시작하는 요청만 처리하려면 location /api/ {}를 사용합니다.

location /api/ {
    proxy_pass http://backend;
}

✔️ 이 설정은 /api/로 정확히 시작하는 요청만 처리합니다:

  • /api/http://backend/
  • /api/postshttp://backend/posts
  • /api/users/123http://backend/users/123

🚫 하지만 /api는 매칭되지 않음. 정확히 /api/로 시작해야만 매칭됩니다.

3️⃣ proxy_pass 뒤에 / 붙였을 때와 안 붙였을 때의 차이

1. /를 붙였을 경우

location /api/ {
    proxy_pass http://backend/;
}
  • 요청: /api/posts
  • 전달: http://backend/api/posts (경로가 그대로 유지됨)

2. /를 붙이지 않았을 경우

location /api/ {
    proxy_pass http://backend;
}
  • 요청: /api/posts
  • 전달: http://backend/posts (/api 경로가 제거됨)

🔑 중요한 포인트

  1. /api/api/는 경로 매칭에서 중요한 차이가 있습니다.
    • /api는 슬래시가 없는 경로로 시작하는 요청을 처리합니다.
    • /api/는 정확히 /api/로 시작하는 요청만 처리합니다.
  2. proxy_pass에서 /를 붙이느냐의 여부가 백엔드 서버로 전달되는 경로에 영향을 미칩니다.
    • /api/를 붙이면 경로가 그대로 전달됩니다.
    • /api/ 뒤에 /를 붙이지 않으면 /api 경로가 제거됩니다.

0개의 댓글