# Внутренний Caddy (TLS обрабатывается внешним) :80 { # --- Заголовки безопасности --- header { X-Frame-Options "SAMEORIGIN" X-Content-Type-Options "nosniff" Strict-Transport-Security "max-age=31536000;" } # --- Маршрутизация запросов (route для явного порядка) --- route { # 1. API бэкенда (Yggdrasil, Web, Admin) reverse_proxy /api/* backend:8080 reverse_proxy /authserver/* backend:8080 reverse_proxy /sessionserver/* backend:8080 # 2. WebSocket для измерения пинга reverse_proxy /ws/ping ping-helper:8081 # 3. Раздача файлов (скины, модпаки) @files path /files/* handle @files { uri strip_prefix /files root * /srv file_server } # 4. Фронтенд (Vue.js SPA) - все остальные запросы reverse_proxy frontend:80 } # Включаем сжатие encode zstd gzip }