/api와 /api/ 경로 처리의 차이점/api와 /api/ 경로 차이Nginx에서는 경로에 슬래시(/)의 유무에 따라 경로 매칭 방식이 달라집니다. 하지만 실제로는 경로가 비슷하게 처리되는 경우가 많습니다. 여기에 대한 설명을 해볼게요.
/api: 경로 뒤에 슬래시(/)가 없으면 /api로 시작하는 모든 요청을 처리합니다./api/: 경로 뒤에 슬래시(/)가 있으면 정확히 /api/로 시작하는 요청만 처리합니다.즉, /api/와 /api는 비슷하게 동작하지만, Nginx는 슬래시가 있는지 없는지를 구분하여 경로를 매칭합니다.
proxy_pass 뒤에 /를 붙였을 때와 안 붙였을 때 차이proxy_pass는 요청을 전달할 백엔드 서버의 URL을 설정하는 지시어입니다. 이때 뒤에 슬래시(/)를 붙였을 때와 붙이지 않았을 때의 차이가 중요합니다.
proxy_pass 뒤에 /를 붙일 때location /api/ {
proxy_pass http://backend/;
}/api/postshttp://backend/api/postsproxy_pass 뒤에 /를 붙이지 않을 때/api 경로를 제거하고 백엔드에 전달합니다.location /api/ {
proxy_pass http://backend;
}/api/postshttp://backend/posts (즉, /api 경로가 제거됨)location /api {} 예시/api 경로로 시작하는 모든 요청을 처리하려면 location /api {}를 사용합니다.
location /api {
proxy_pass http://backend;
}
✔️ 이 설정은 /api로 시작하는 모든 요청을 처리합니다:
/api → http://backend//api/posts → http://backend/posts/api/users/123 → http://backend/users/123location /api/ {} 예시/api/ 경로로 정확히 시작하는 요청만 처리하려면 location /api/ {}를 사용합니다.
location /api/ {
proxy_pass http://backend;
}
✔️ 이 설정은 /api/로 정확히 시작하는 요청만 처리합니다:
/api/ → http://backend//api/posts → http://backend/posts/api/users/123 → http://backend/users/123🚫 하지만 /api는 매칭되지 않음. 정확히 /api/로 시작해야만 매칭됩니다.
proxy_pass 뒤에 / 붙였을 때와 안 붙였을 때의 차이/를 붙였을 경우location /api/ {
proxy_pass http://backend/;
}
/api/postshttp://backend/api/posts (경로가 그대로 유지됨)/를 붙이지 않았을 경우location /api/ {
proxy_pass http://backend;
}
/api/postshttp://backend/posts (/api 경로가 제거됨)/api와 /api/는 경로 매칭에서 중요한 차이가 있습니다./api는 슬래시가 없는 경로로 시작하는 요청을 처리합니다./api/는 정확히 /api/로 시작하는 요청만 처리합니다.proxy_pass에서 /를 붙이느냐의 여부가 백엔드 서버로 전달되는 경로에 영향을 미칩니다./api/를 붙이면 경로가 그대로 전달됩니다./api/ 뒤에 /를 붙이지 않으면 /api 경로가 제거됩니다.