# exdev 통합 HTTPS (443) — stock / chatbot(Agent) / bizcare / nationcompany / github / apex # Agent 배포 시 chatbot-only Caddyfile 로 덮어써 다른 서브도메인이 깨진 것을 복구 { email {$CADDY_ACME_EMAIL:admin@exdev.co.kr} auto_https disable_redirects } (tls_certs) { tls /etc/caddy/certs/fullchain.pem /etc/caddy/certs/privkey.pem } (proxy_std) { flush_interval -1 transport http { read_timeout 120s write_timeout 120s 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 {scheme} } # ── GoldenChart ─────────────────────────────────────────────────────────────── https://{$STOCK_DOMAIN:stock.exdev.co.kr} { import tls_certs handle { reverse_proxy host.docker.internal:{$GOLDENCHART_HOST_PORT:80} { import proxy_std } } } # ── Chatbot Agent 2.0 ───────────────────────────────────────────────────────── https://{$CHATBOT_DOMAIN:chatbot.exdev.co.kr} { import tls_certs # 업스트림 nginx 가 HTTP 로 absolute redirect 해서 http:// 로 떨어지지 않게 Caddy 에서 처리 redir / /chatbot/app/ 302 handle /agent/* { reverse_proxy host.docker.internal:{$RAG_API_PORT:28012} { transport http { read_timeout 120s write_timeout 120s } } } handle /chatbot/admin* { uri strip_prefix /chatbot/admin reverse_proxy host.docker.internal:{$ADMIN_PORT:28013} { transport http { read_timeout 120s write_timeout 120s } } } handle /web/* { reverse_proxy host.docker.internal:{$SKILL_PORT:8083} { transport http { read_timeout 120s write_timeout 120s } } } # 카카오 오픈빌더 Skill 웹훅 (/kakao/skill, /oakak/skill) handle /kakao/* { reverse_proxy host.docker.internal:{$SKILL_PORT:8083} { transport http { read_timeout 120s write_timeout 120s } } } handle /oakak/* { reverse_proxy host.docker.internal:{$SKILL_PORT:8083} { transport http { read_timeout 120s write_timeout 120s } } } handle { reverse_proxy host.docker.internal:{$CHATBOT_APP_PORT:8092} { import proxy_std } } } # ── BizCare ─────────────────────────────────────────────────────────────────── https://{$BIZCARE_DOMAIN:bizcare.exdev.co.kr} { tls /etc/caddy/certs/bizcare/fullchain.pem /etc/caddy/certs/bizcare/privkey.pem handle { reverse_proxy host.docker.internal:{$BIZCARE_HOST_PORT:83} { import proxy_std } } } # ── ChannelONE (nationcompany) — TLS-ALPN ACME ──────────────────────────────── https://{$NATIONCOMPANY_DOMAIN:nationcompany.exdev.co.kr} { handle { reverse_proxy host.docker.internal:{$NATIONCOMPANY_HOST_PORT:84} { import proxy_std } } } # ── Gitea (github.exdev.co.kr) ──────────────────────────────────────────────── https://{$GITHUB_DOMAIN:github.exdev.co.kr} { tls /etc/caddy/certs/github/fullchain.pem /etc/caddy/certs/github/privkey.pem handle { reverse_proxy host.docker.internal:{$GITEA_HOST_PORT:3000} { flush_interval -1 transport http { read_timeout 3600s write_timeout 3600s 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 {scheme} } } } # ── Legacy apex ─────────────────────────────────────────────────────────────── https://{$HTTPS_DOMAIN:exdev.co.kr} { import tls_certs @legacy_chatbot path /chatbot /chatbot/* handle @legacy_chatbot { redir https://{$CHATBOT_DOMAIN:chatbot.exdev.co.kr}{uri} permanent } handle { redir https://{$STOCK_DOMAIN:stock.exdev.co.kr}{uri} permanent } }