채팅 7875532826 / 메시지 1684
텍스트 메시지
대화방 Snoopybot
발신자 Snoopybot (@snoopy0816bot)
발신 시각 2026-03-01T02:56:57+00:00
메시지
좋은 방향입니다.
지금 구조(포트별 Flask 직접접속)를 Reverse Proxy + HTTPS로 바꾸는 표준 절차를 짧게 정리하면 아래예요.
목표 구조
• 기존: http://smartdonga.synology.me:41000 같은 포트 직접접속
• 변경: https://smartdonga.synology.me/faculty 같은 443 단일 진입
1) Flask 앱 공통 수정 (중요)
Flask를 “루트(/)”가 아니라 하위 경로에서도 동작하게 해야 함.
예: /faculty로 서비스할 경우
• 앱에서 APPLICATION_ROOT 또는 SCRIPT_NAME 고려
• 정적파일/링크를 절대경로(/static/...)로 하드코딩하지 말고 url_for() 사용
• 필요한 경우 ProxyFix 적용
from werkzeug.middleware.proxy_fix import ProxyFix
app.wsgi_app = ProxyFix(app.wsgi_app, x_proto=1, x_host=1, x_prefix=1)
2) Synology Reverse Proxy 설정
DSM → 제어판 → 로그인 포털 → 고급 → 리버스 프록시
서비스별 규칙 추가:
• 소스:
• 프로토콜: HTTPS
• 호스트: smartdonga.synology.me
• 포트: 443
• 경로: /faculty (예시)
• 대상:
• 프로토콜: HTTP
• 호스트: 127.0.0.1
• 포트: 41000
다른 앱도 같은 방식:
• /dongaventure → 42000
• /techtransfer → 43000
• /monitor → 44000
• /startup → 40000 등
3) 인증서(HTTPS) 적용
DSM → 보안 → 인증서
• Let’s Encrypt로 smartdonga.synology.me 인증서 발급
• 리버스 프록시/웹서비스에 해당 인증서 연결
4) 보안 강화
• 공유기/NAS 방화벽에서 외부 개방 포트는 가능하면 443만
• 기존 41000/42000/43000/44000 외부포트 포워딩 제거
• Flask 앱은 내부에서만 listen(127.0.0.1 또는 docker network) 권장
5) Flask에서 자주 생기는 이슈
• 하위 경로(/faculty)에서 CSS/JS 404
→ 정적 경로 하드코딩 문제
• 로그인 redirect가 http로 떨어짐
→ ProxyFix, X-Forwarded-Proto 처리 필요
• /api CORS 에러
→ 프론트 도메인 기준 CORS 재설정
원하면 제가 다음 메시지에 **현재 6개 서비스 기준으로 “리버스프록시 규칙표(복붙용)”**를 바로 만들어드릴게요.
(서비스별 source/target/path를 정확히 한 줄씩)