# ── Caddyfile PRODUKSI v2 — TUNED (auto-TLS Let's Encrypt) ── # Tuning: HTTP/3 default, keep-alive upstream, zstd+gzip, timeouts, buffer, TLS 1.3 { email asepharyana@gmail.com # Global tuning servers { protocols h1 h2 h3 trusted_proxies static private_ranges } grace_period 10s } # ── Helper: handler umum (gzip + zstd, header keamanan) — dipanggil dgn argumen: port # Penggunaan: import proxy 4003 (proxy) { encode zstd gzip header { -Server X-Content-Type-Options "nosniff" X-Frame-Options "SAMEORIGIN" Referrer-Policy "strict-origin-when-cross-origin" } # Keep-alive upstream: max 100 idle conns per host, dial timeout 3s reverse_proxy 127.0.0.1:{args[0]} { transport http { keepalive 120s keepalive_interval 30s max_conns_per_host 100 dial_timeout 3s response_header_timeout 30s read_timeout 60s write_timeout 60s } } } asepharyana.my.id, www.asepharyana.my.id, asepharyana.web.id, www.asepharyana.web.id, hub.asepharyana.my.id { import proxy 4003 } scraper.asepharyana.my.id, api.asepharyana.my.id, scraper.asepharyana.web.id, api.asepharyana.web.id { import proxy 4091 } ai.asepharyana.my.id, ai.asepharyana.web.id { import proxy 4010 } tools.asepharyana.my.id, tools.asepharyana.web.id { import proxy 4007 } 9router.asepharyana.my.id { import proxy 4014 } pr-agent.asepharyana.my.id { import proxy 4002 } lidm.asepharyana.my.id { import proxy 4004 } lidm-api.asepharyana.my.id { import proxy 4005 } zeavisedu.asepharyana.my.id { import proxy 4011 } api-zeavisedu.asepharyana.my.id { import proxy 4006 } ml-zeavisedu.asepharyana.my.id { import proxy 4012 } dashboard.asepharyana.my.id { import proxy 4013 } imphnen.asepharyana.my.id { import proxy 4009 } upload.asepharyana.my.id, upload.asepharyana.web.id { # Upload: no compression (binary), big body allowed, streaming reverse_proxy 127.0.0.1:4000 { transport http { keepalive 120s keepalive_interval 30s max_conns_per_host 100 dial_timeout 3s } flush_interval -1 } request_body { max_size 0 } }