Dev

Nginx + uWSGI 연동 설정 | Ubuntu 서버 세팅, 이 순서대로 하면 끝 (13)

KingdomPillar 2025. 4. 12. 09:00
반응형

Nginx + uWSGI 연동 – Django 앱을 외부에 띄우는 마지막 연결 고리

이제 거의 다 왔다.

Django 프로젝트를 외부에서 접근 가능하게 만들려면, uWSGI가 처리한 요청을 Nginx가 잘 받아서 사용자에게 전달할 수 있어야 한다.

이번 글에서는 이 둘을 연결하는 과정을 정리해보자.


1. Nginx 설정 파일 수정

먼저 Nginx가 uWSGI 소켓과 Django 정적/미디어 파일을 잘 처리할 수 있도록 설정을 바꿔준다.

sudo vi /etc/nginx/sites-available/default

 

다음 내용을 입력한다 (※ server_name, alias 경로는 본인 환경에 맞게 조정):

server {
    listen 80;
    server_name tistory.com;

    charset utf-8;
    client_max_body_size 30M;
    access_log /var/log/nginx/tistory_access.log;
    error_log /var/log/nginx/tistory_error.log;

    location / {
        include /etc/nginx/uwsgi_params;
        uwsgi_pass unix:///run/uwsgi/tistory.sock;
        uwsgi_read_timeout 2000;
    }

    location /static/ {
        alias /home/USERNAME/tistory/staticfiles/;
    }

    location /media/ {
        alias /home/USERNAME/tistory/mediafiles/;
    }

    location = /elb-status {
        access_log off;
        return 200;
    }
}
  • server_name: 서버의 도메인 또는 공인 IP
  • log: 프로젝트명에 맞춰 구분된 Nginx 로그 설정
  • uwsgi_pass: uWSGI에서 사용하는 소켓 경로
  • /static/ & /media/: Django의 정적(static) 및 미디어(media) 파일 경로
  • elb-status: AWS ELB 헬스 체크용

 

 

2. Nginx 설정 반영 및 재시작

sudo systemctl daemon-reload
sudo systemctl restart nginx

 

정상적으로 실행되었는지 상태를 확인한다:

sudo systemctl status nginx

마무리

여기까지 무사히 따라왔다면, 이제 Django 프로젝트는
uWSGI를 통해 실행되고, Nginx를 거쳐 외부 요청을 받을 준비가 끝난 상태다.

서버 세팅의 마지막 퍼즐 조각을 맞춘 느낌이다.
이 순간을 위해 수많은 패키지를 설치하고, 방화벽을 열고, .ini 파일과 설정 파일을 줄곧 수정해왔다.
서버의 숨겨진 뒷단을 하나씩 열고, 직접 손으로 이어 붙이며 완성된 시스템은 그 자체로 하나의 창조물 같다.

반응형