본문 바로가기
컴퓨터 활용/노년에 즐기는 코딩

[Django] Nginx에서 root와 alias의 차이

by easyfly 2025. 9. 11.
반응형

Nginx에서 root와 alias의 차이, 쉽게 이해하기

웹 서버를 다루다 보면 정적 파일을 서비스하기 위해 root와 alias라는 지시어를 접하게 됩니다. 얼핏 보면 비슷해 보이지만, 실제 동작 방식은 꽤 다릅니다. 이 차이를 잘 이해해야 정적 파일이 제대로 서빙되고, 원인 모를 오류도 줄일 수 있습니다.

Nginx 환경 설정에서 alias 사용 사례


1. root란 무엇인가?

root는 말 그대로 기준 디렉토리(루트)를 지정하는 역할을 합니다.

  • Nginx는 location 경로를 그대로 이어 붙여서 실제 파일 경로를 찾습니다.

예시:

location /static/ {
    root /app;
}
  • 사용자가 /static/style.css 요청 → /app/static/style.css 파일을 찾습니다.
  • 즉, location /static/이 실제 디렉토리 /app/static/으로 이어집니다.

2. alias란 무엇인가?

alias는 경로를 치환하는 역할을 합니다.

  • location 부분은 버리고, 요청 경로의 나머지를 alias 뒤에 붙입니다.

예시:

location /static/ {
    alias /app/staticfiles/;
}
  • 사용자가 /static/style.css 요청 → /app/staticfiles/style.css 파일을 찾습니다.
  • 여기서는 /static/이라는 URL 접두어가 실제 경로로 들어가지 않습니다.

3. 두 설정의 차이를 표로 비교

구분 설정 방식 요청 URL 실제 찾는 경로
root root /app; /static/style.css /app/static/style.css
alias alias /app/staticfiles/; /static/style.css /app/staticfiles/style.css

 

즉, root는 경로를 덧붙이고, alias는 경로를 바꿔치기한다고 생각하면 쉽습니다.


4. 언제 무엇을 쓰면 좋을까?

  • root: URL 경로와 실제 디렉토리 구조가 같을 때 적합합니다.
    • 예: /images/flower.jpg → /app/images/flower.jpg
  • alias: URL 경로와 실제 디렉토리 구조가 다를 때 적합합니다.
    • 예: /static/style.css → /app/staticfiles/style.css

5. 정리

  • root = 기준 디렉토리, location 경로가 붙는다.
  • alias = 경로 치환, location 경로는 버려지고 지정한 디렉토리로 바로 연결된다.

👉 따라서 Django 같은 웹 프레임워크에서는 정적 파일(collectstatic으로 모인 /app/staticfiles/)을 서비스할 때 alias를 쓰는 것이 정확합니다. URL 접두어(/static/)와 실제 경로(/app/staticfiles/)가 다르기 때문입니다.

 

반응형

댓글