[AWS] Lightsail을 사용하여 Django 프로젝트 배포하기(3) - Nginx 설치, 정적 파일 가져오기

itisny·2024년 1월 30일
0

Nginx는 고성능의 웹 서버이자 리버스 프록시 서버입니다. 브라우저의 정적 페이지 요청을 처리하고 동적 페이지 요청인 경우 WSGI 서버를 호출하는 역할을 합니다.

sudo apt install nginx -y  # nginx 설치

sudo vim /etc/nginx/sites-enabled/default  # nginx 설정 파일

location / {
           include proxy_params;
           proxy_pass http://unix:/tmp/gunicorn.sock;

           # First attempt to serve request as file, then
           # as directory, then fall back to displaying a 404.
           # try_files $uri $uri/ =404;
}

프론트에서 /로 시작되는 모든 요청은 Gunicorn이 처리하도록 하는 설정이다. proxy_pass는 동적 요청이 발생하면 해당 요청을 Gunicorn의 유닉스 소켓으로 보내라는 설정이다.
proxy pass는 url만 전달할뿐 요청에 대한 정보까지 넘겨주지 않으니까 proxy params을 사용해서 헤더등의 추가 정보까지 전달해준다.

nginx 세팅 파일 문법 검사 (확인) : sudo nginx -t

sudo systemctl restart nginx  # 재시작
sudo systemctl status nginx   # Nginx 상태 확인

서버 접속하기

static으로된 정적 파일을 가져 오지 못하는 것을 확인할 수 있습니다.

urlpatterns = [
    path("admin/", admin.site.urls),
    path("", include("main.urls")),
    ...
]

urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
# settings.py
STATIC_URL = "static/"
# STATICFILES_DIRS = [
#     BASE_DIR / "static",
# ]
STATIC_ROOT = BASE_DIR / "static"

        location /static {
                alias /home/ubuntu/{static 경로};
        }
        
        location / {
                include proxy_params;
                proxy_pass http://unix:/tmp/gunicorn.sock;
        }
}

수정 후 sudo systemctl restart nginx
Nginx는 설치할 때 자동으로 실행되므로 앞에서 작성한 Nginx 설정을 적용하려면 Nginx를 다음처럼 다시 시작해야 한다.

403 forbbiden

user를 ubuntu로 바꾸면서 해결

0개의 댓글