nullvuild

Bloger @nullvuild

Created Date '2025/03/09 오후 10:01

Modified Date '2025/03/22 오후 05:02

#Django #서버 #로컬 #DEBUG

Django 프로젝트를 개발할 때 로컬 환경과 서버(운영 환경)에서 DEBUG 설정을 다르게 적용해야 한다. 실수로 운영 환경에서 DEBUG=True를 유지하면 보안 취약점이 발생할 수 있으므로 이를 방지해야 한다.


환경 변수를 이용한 DEBUG 설정

로컬에서는 DEBUG=True, 운영 환경에서는 DEBUG=False가 자동으로 적용되도록 하기 위해

아래와 같이 settings.py에서 환경 변수를 기반으로 설정할 수 있습니다.


참고로 로컬에서 DEBUG=False일 때, static 내의 내용이 제대로 import 되지 않는다.

settings.py에서 DEBUG 변수 설정

설명

  • 환경 변수 YOUR_DEBUG 값을 가져와 문자열 True와 비교한다.
  • 기본값은 False이므로, 환경 변수가 설정되지 않았다면 자동으로 DEBUG=False가 된다.

아래 내용은 일반적으로 DEBUG가 False일 때, 필요한 내용이다. 각자 상황에 맞게 변경하면 된다.
  • SECURE_SSL_REDIRECT = True → HTTPS 강제 리디렉트 활성화
  • SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') → 보안 헤더 적용

아래 내용은 일반적으로 DEBUG가 True일 때, 필요한 내용이다. 각자 상황에 맞게 변경하면 된다.
  • SECURE_SSL_REDIRECT = False → HTTPS 강제 리디렉트 비활성화
  • SECURE_HSTS_SECONDS = 0 → HSTS 비활성화

settings.py

import os

DEBUG = os.getenv("YOUR_DEBUG", "False") == "True"
#print(f"YOUR_DEBUG: '{os.getenv('YOUR_DEBUG')}'")  # 환경 변수 값 확인용 (테스트 시 주석 해제)

if not DEBUG:  # 배포 환경에서는 HTTPS 강제 리디렉트 적용
    SECURE_SSL_REDIRECT = True
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
else:  # 로컬에서는 HTTPS 리디렉트 비활성화
    SECURE_SSL_REDIRECT = False
    SECURE_HSTS_SECONDS = 0  # HSTS 비활성화

    
Nullvuild

Nullvuild

@nullvuild

프로필