# Caddyfile — MrixsCraft reverse proxy + static file serving.
# TLS is automatic. Adjust domain names to your actual domains.

# ── CDN: CAS files (immutable, long cache) ────────────────────

cdn.mrixs.me {
    root * /var/www/cdn/files

    # CAS files — content-addressed, never change.
    handle /files/* {
        file_server {
            hide .htaccess
        }
        header Cache-Control "public, max-age=31536000, immutable"
    }

    # Skins — shorter cache so players see changes.
    handle /skins/* {
        file_server {
            hide .htaccess
        }
        header Cache-Control "public, max-age=3600"
    }
}

# ── API + Yggdrasil ───────────────────────────────────────────

minecraft.mrixs.me {
    # Yggdrasil authentication (launcher + game client).
    handle /authserver/* {
        reverse_proxy backend:8080
    }

    handle /sessionserver/* {
        reverse_proxy backend:8080
    }

    # Public API (launcher + website).
    handle /api/* {
        reverse_proxy backend:8080
    }

    # Skin serving.
    handle /skins/* {
        reverse_proxy backend:8080
    }

    # CAS file serving (fallback if not served by CDN domain).
    handle /files/* {
        reverse_proxy backend:8080
    }

    # Everything else — frontend / templates.
    handle {
        reverse_proxy backend:8080
    }
}
