Dispatcher farm design
Purpose: Design farms, vhosts and cache trees for multiple sites and domains on shared dispatcher infrastructure.
Who this page is for
| Audience | Why it matters to you |
|---|---|
| Platform engineers | Config owners |
| Tech leads | Delivery design |
Farm-per-site is the default
httpd vhosts: phi.example.org health.example.org
│ │
dispatcher.any farms: /phi-farm /health-farm
docroot /cache/phi docroot /cache/health
filters (site-specific) filters
statfileslevel per tree statfileslevel
| Per-farm decision | Guidance |
|---|---|
| Docroot | Separate per site — isolation of cache + flush blast radius |
| Filters | Site-scoped allowlist (/content/phi/*), shared deny baseline included from a common file |
| statfileslevel | Match the site's tree depth (invalidate a section, not the site) |
| /invalidate | html + the site's JSON endpoints |
| /renders | The paired publisher(s); timeouts tuned for the site's render profile |
Shared baseline, per-site delta
Maintain dispatcher config as code with includes: a common security baseline (deny rules, header hygiene — dispatcher security) included by every farm, plus a per-site allowlist file. Site teams propose changes to their file; the baseline changes only with platform review.
URL shortening / resource mapping
Public URLs (/plans/gold-hospital) vs repository paths (/content/phi/plans/gold-hospital): map at the dispatcher/web-server (rewrites) or Sling mappings — pick ONE owner for the mapping and keep its inverse for link rewriting consistent. Split-brain mapping (some rules in Apache, some in Sling) is a recurring outage source.
Operational notes
- Validate every change with the dispatcher validator in CI before it reaches a real web server.
- Cache clear is an operational action with a runbook, not an ssh habit; full flushes during peak = self-inflicted cold-cache incident (load testing scenarios).