본문 바로가기
WEB/Python-Django

Docker 설정(settings.py)

by DeveloperCat 2025. 7. 4.
반응형

✅ 왜 DEBUG = False를 꼭 해야 할까?

👉 DEBUG = True 상태에서 발생하는 문제들:


1. 🧨 예외 발생 시 내부 정보가 그대로 노출됨

  • Django는 에러가 나면 아래처럼 친절한 에러 페이지를 보여줌:
더보기
TypeError at /users/
str() argument must be str, not NoneType

Request Method: GET
Request URL: http://example.com/users/
Python Version: 3.10
Django Version: 4.2.14
Installed Apps: [...]
 

🔓 이게 무슨 문제냐면?

  • 코드 경로 (/home/ubuntu/myproject/venv/lib/...)
  • 사용 중인 Python, Django, 라이브러리 버전
  • 설정된 앱 이름 등등
    해커 입장에서 공격 대상 시스템의 정보가 다 까발려짐

2. 🔓 정적 파일이 직접 서빙됨

DEBUG = True일 때는 Django 자체가 /static/, /media/를 직접 처리함.
운영환경에서는 반드시 Nginx 같은 웹서버가 처리하게 해야 해.


3. ❌ 보안 관련 미들웨어가 정상 동작 안 할 수도 있음

  • SECURE_SSL_REDIRECT, SESSION_COOKIE_SECURE, CSRF_COOKIE_SECURE 등은
    보통 DEBUG = False일 때만 작동하도록 되어 있음

✅ 그러면 DEBUG=False면 뭐가 필요할까?

1. ALLOWED_HOSTS 반드시 설정해야 함

더보기
DEBUG = False
ALLOWED_HOSTS = ['example.com', 'http://www.example.com']

→ 아니면 아래와 같은 에러:

더보기
CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.

2. static 파일 직접 못 서빙함 → collectstatic 필요

더보기
python manage.py collectstatic

→ Nginx 또는 WhiteNoise 등의 static 파일 서버가 필요함


3. 보안 설정들 추가로 필요

더보기
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_HSTS_SECONDS = 3600
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_HSTS_PRELOAD = True
반응형

'WEB > Python-Django' 카테고리의 다른 글

Docker 관련 명령어  (0) 2025.07.04
Docker 설정(.env.dev)  (1) 2025.07.04
Docker설정(docker-compose.yml)  (0) 2025.07.04
Docker 설정(Dockerfile)  (0) 2025.07.04
Docker 설정(requirements.txt)  (2) 2025.07.04