82 lines
2.5 KiB
Caddyfile
82 lines
2.5 KiB
Caddyfile
# 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 {
|
|
read_timeout 600s
|
|
write_timeout 600s
|
|
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
|
|
# }
|