Files
exAichatbot_agent/server-dev/caddy/Caddyfile.agent.exdev
T
2026-08-18 09:26:35 +09:00

155 lines
4.6 KiB
Caddyfile
Executable File

# 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/ai/ 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
}
}
}
# iOS 홈화면 Web Clip — MIME 를 Caddy에서 강제 (인앱/프록시에서 text 로 깨지는 것 방지)
handle /chatbot/ai/downloads/*.mobileconfig {
header Content-Type application/x-apple-aspen-config
header Content-Disposition inline
header Cache-Control "no-cache, no-store, must-revalidate"
reverse_proxy host.docker.internal:{$CHATBOT_APP_PORT:8092} {
import proxy_std
}
}
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
}
}