blumeops/fly
Erich Blume fe0e913963
All checks were successful
Deploy Fly.io Proxy / deploy (push) Successful in 1m37s
Switch Fly proxy to upstream keepalive pools (#337)
## Summary

- Replace per-request DNS resolution (variable-based `proxy_pass`) with static `upstream` blocks and `keepalive` connection pools
- Reuses TLS connections through the Tailscale tunnel instead of handshaking per request
- Add `mise run fly-reload` for nginx config reload without full redeploy (re-resolves upstream DNS)

## Trade-off

DNS is resolved at config load, not per-request. If Tailscale Ingress pods get new IPs (restart, reschedule), `mise run fly-reload` is needed. A Grafana alert will be added to detect this.

## Still TODO on this branch

- [ ] Grafana alert for upstream unreachable (triggers fly-reload reminder)
- [ ] Docs pass
- [ ] Deploy from branch and verify latency improvement
- [ ] Changelog fragment

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: #337
2026-04-17 16:39:52 -07:00
..
fail2ban Expose Forgejo publicly at forge.eblu.me (#278) 2026-03-03 08:40:41 -08:00
alloy.river Add Forgejo metrics + upstream latency histogram to Fly proxy dashboard 2026-04-17 15:05:59 -07:00
Dockerfile Pin Fly.io Tailscale to v1.94.1 to fix MagicDNS regression in v1.96.5 2026-04-10 19:32:38 -07:00
error.html
fly.toml Bump Fly.io proxy VM to 512MB, fix TruffleHog scanning (#152) 2026-02-11 12:03:51 -08:00
nginx.conf Switch Fly proxy to upstream keepalive pools (#337) 2026-04-17 16:39:52 -07:00
start.sh Switch Fly proxy to upstream keepalive pools (#337) 2026-04-17 16:39:52 -07:00