Serve friendly error page when Fly.io proxy upstreams are unreachable #133

Merged
eblume merged 1 commit from feature/fly-proxy-error-page into main 2026-02-09 12:01:24 -08:00
Owner

Summary

  • Adds a branded 503 error page served when upstreams are unreachable (indri offline, Tailscale tunnel down, emergency shutoff, etc.)
  • Stale cache is still served first when available (proxy_cache_use_stale takes priority)
  • Test endpoint at docs.eblu.me/_error to preview the page without killing upstreams
  • proxy_intercept_errors on also catches error responses returned by the upstream itself

Files Changed

  • fly/error.html — Self-contained error page (dark theme, links to BlumeOps repo)
  • fly/nginx.conferror_page, internal location, /_error test location, proxy_intercept_errors
  • fly/Dockerfile — COPY error.html into image

Test Plan

  • Deploy to Fly.io
  • Visit docs.eblu.me/_error to verify the page renders
  • Optionally stop indri/Tailscale to confirm the page shows on real 502/503/504
## Summary - Adds a branded 503 error page served when upstreams are unreachable (indri offline, Tailscale tunnel down, emergency shutoff, etc.) - Stale cache is still served first when available (`proxy_cache_use_stale` takes priority) - Test endpoint at `docs.eblu.me/_error` to preview the page without killing upstreams - `proxy_intercept_errors on` also catches error responses returned by the upstream itself ## Files Changed - `fly/error.html` — Self-contained error page (dark theme, links to BlumeOps repo) - `fly/nginx.conf` — `error_page`, `internal` location, `/_error` test location, `proxy_intercept_errors` - `fly/Dockerfile` — COPY error.html into image ## Test Plan - [ ] Deploy to Fly.io - [ ] Visit `docs.eblu.me/_error` to verify the page renders - [ ] Optionally stop indri/Tailscale to confirm the page shows on real 502/503/504
When indri is offline, the Tailscale tunnel is down, or the emergency
shutoff was triggered, visitors now see a branded 503 page instead of
nginx's default 502. Stale cache is still served when available
(proxy_cache_use_stale takes priority). Test endpoint at /_error.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
eblume merged commit 4ee643a81d into main 2026-02-09 12:01:24 -08:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
eblume/blumeops!133
No description provided.