# exdev.co.kr — GoldenChart + Chatbot HTTPS 공존 (Caddy v2 예시) # # 원칙: # - 443 포트는 Caddy만 사용 (gc-frontend·chatbot은 443 바인딩 금지) # - GoldenChart: 호스트/ Docker gc-frontend :80 # - Chatbot: 별도 컨테이너 내부 포트 (아래 CHATBOT_UPSTREAM 수정) # # 설치 위치 (ex-chatbot 프로젝트): docker/nginx/Caddyfile 또는 Caddyfile # 적용 후: docker compose restart caddy (프로젝트명에 맞게 조정) # # 검증: # curl -sS -o /dev/null -w "GC HTTPS %{size_download}\n" https://exdev.co.kr/ # curl -sS -o /dev/null -w "CB HTTPS %{size_download}\n" https://exdev.co.kr/chatbot/ # ./scripts/verify-desktop-updater-endpoint.sh { # HTTP/2·HTTP/3 — 본문 버퍼링 이슈 완화 servers { protocols h1 h2 h3 } } (exdev_tls) { # Let's Encrypt — ex-chatbot obtain-cert-exdev.sh 로 발급한 인증서 경로에 맞게 수정 tls /etc/caddy/certs/fullchain.pem /etc/caddy/certs/privkey.pem } # ── Chatbot upstream (실제 포트·호스트명은 환경에 맞게) ───────────────────── # Docker: chatbot 컨테이너명:내부포트 / 호스트: host.docker.internal:PORT (chatbot_upstream) { reverse_proxy host.docker.internal:8081 { flush_interval -1 transport http { versions 1.1 2 } header_up Host {host} header_up X-Forwarded-Proto https header_up X-Forwarded-Prefix /chatbot } } # ── GoldenChart (gc-frontend nginx :80) ───────────────────────────────────── (goldenchart_upstream) { reverse_proxy host.docker.internal:80 { flush_interval -1 transport http { versions 1.1 2 } header_up Host {host} header_up X-Real-IP {remote_host} header_up X-Forwarded-For {remote_host} header_up X-Forwarded-Proto https } } exdev.co.kr { import exdev_tls # 1) Chatbot — /chatbot/* (경로 유지; 앱이 /chatbot base path 를 기대할 때) @chatbot path /chatbot /chatbot/* handle @chatbot { import chatbot_upstream } # 2) GoldenChart — 나머지 전부 (SPA, /api 는 nginx→backend, /desktop/updates 등) handle { import goldenchart_upstream } } # ── 대안: 서브도메인 분리 (경로 충돌이 없어 운영이 단순함) ───────────────────── # chat.exdev.co.kr { # import exdev_tls # import chatbot_upstream # } # chart.exdev.co.kr { # import exdev_tls # import goldenchart_upstream # }