규도자 개발 블로그

django settings.py의 ALLOWED_HOSTS와 상용환경에서의 테스트 본문

Python/Django

django settings.py의 ALLOWED_HOSTS와 상용환경에서의 테스트

규도자 (gyudoza) 2019. 12. 3. 17:09

django settings.py의 ALLOWED_HOSTS와 상용환경에서의 테스트

DEBUG가 True일 땐 ALLOWED_HOSTS에 자동으로 ['localhost', '127.0.0.1', '[::1]']가 적용되어 내가 돌려보고 내컴퓨터에서 들어가는 것이므로 윈도우나 맥 등에서의 개발환경에서는 사이트의 작동을 확인할 수 있지만 서버환경, 그러니까 외부에 노출된 IP가 있는 환경에서는 이렇게 돌려볼 순 있어도 서버 자체에서 브라우저를 설치해 들어가보지 않는 이상 확인해볼 방법이 없다.

 그럼에도 불구하고 python manage.py runserver명령어를 통해 외부 브라우저에서 확인할 수 있는 방법이 있는데 뒤에 0.0.0.0:80이라는 주소와 포트번호를 붙이면 된다. 만들어진 명령어는 python manage.py runserver 0.0.0.0:80이 된다. 이러면 외부에 노출돼있는 주소를 통해 서버에 접속해볼 수 있는데 DEBUG가 True이므로 보안에 일단 주의하도록 하자. 왜냐. ALLOWED_HOSTS에 해당 서버의 주소를 추가하지 않으면 오류가 날 뿐더러 수많은 에러메시지로 인해 서버의 많은 상태가 노출되기 때문이다. DEBUG가 True이면 위에 말했던 ['localhost', '127.0.0.1', '[::1]']만 들어가게 되므로 ALLOWED_HOSTS에 현재 ip address가 없다고 DisallowedHost Exception을 뱉을 것이다.


상용환경에서 gunicorn이나 uwsgi를 셋팅하고 nginx나 apache를 통해 테스트하기엔 시간이 조금 소요되니 그전에 간단하게 테스트를 원한다면 setting.py의 ALLOWED_HOSTS에 deploy를 원하는 주소를 넣어두고 python manage.py runserver 0.0.0.0:80 명령어를 통해 실험을 해볼 수 있다는 것이 이 글의 요지이다.

Comments