개발 삽질 일지

[Django] 서버 외부 공개하기 본문

Django

[Django] 서버 외부 공개하기

그낙이 2025. 5. 3. 16:53
반응형
반응형

이 글은 Django 개발 서버를 외부에서 접근 가능하게 만들고 싶은 분들을 위한 ngrok 설정 가이드입니다.

로컬에서 개발한 Django 웹을 친구에게 보여주거나, 테스트용 URL을 빠르게 생성하고 싶을 때 유용합니다. 저의 경우에는 QA에게 배포 전에 로컬 환경을 보여주기 힘들어서 찾은 대안이 ngrok이였습니다. 

 

Ngrok이란?

 

ngrok은 로컬에서 실행 중인 웹 서버를 공개된 HTTPS 주소로 포워딩해주는 서비스입니다.

 

  • 터널링(Tunneling) 기술 기반
  • 개발용 Webhook 테스트, 모바일에서 로컬 서버 접근, 클라이언트에게 시연할 때 자주 사용됨
  • HTTPS 보안 URL을 자동으로 생성해줌
  • 배포하지 않고도 로컬 환경을 외부에 공개할 수 있음

즉, 배포 전, 로컬 서버를 외부에서 접속 가능하게 만들어주는 도구입니다. 

 

실습: Ngrok으로 Django 외부 접속하기

 

ngrok 설치하기

 

ngrok 사이트에 접속해서 운영체제에 맞는 ngrok 파일을 다운받아야 합니다. 

https://ngrok.com/downloads/windows

 

Download ngrok

Download ngrok

ngrok.com

 

 

ngrok에서 본인 운영체제에 맞게 다운받으시면 됩니다.

 

 

파일 다운로드 후, 압축 풀고 ngrok.exe 파일 실행해줍니다.

 

ngrok 페이지에서 개인 토큰 복사

 

복사 후 ngrok.exe에 그대로 붙여넣기

 

Django 개발 서버 설정 변경 

 

cmd에서 ipconfig를 통해 IPv4 주소를 확인하고, 개발 중인 Django settings.py에 추가해줍니다.

ALLOWED_HOSTS = [
    'localhost',
    '127.0.0.1',
    '10.95.xxx.xxx',      # 로컬 IP
    'xxxxxxxx.ngrok-free.app'  # ngrok 주소 매번 바뀜!
]
 
# ALLOWED_HOSTS = ["*"]

# ngrok 서버 주소까지 허용하려면 
CSRF_TRUSTED_ORIGINS = ["https://*.ngrok-free.app"]

 

이후 Django 서버를 실행해주면 됩니다. 

python manage.py runserver 10.95.xxx.xxx:8000
# python manage.py runserver 0.0.0.0:8000

 

 

ngrok으로 외부 접속 터널 열기

ngrok http 10.95.xxx.xxx:8000
# ngrok http 8000

 

이후, 출력된 https://xxxxx.ngrok-free.app 주소를 통해 외부에서도 로컬에 접속 가능해집니다.

 

참고로 테스트 중일 때는 위에 주석을 풀어서 다 허용해주는게 편합니다. 그렇지 않다면, 서버가 변경될 때마다 ngrok의 서버 도메인이 바뀌게 되고 settings.py 항목들을 매번 수정해줘야 합니다.

 

조금 번거롭지만, 이 과정을 한번 익혀두면 실제 배포 전 외부 환경에서의 작동을 검증해볼 수 있습니다. 

언제나처럼 — 시작은 삽질이지만, 끝은 지식입니다.

 

반응형