Skip to content

Commit 47ce2fc

Browse files
rubysclaude
andcommitted
Navigator v0.6.1: Intelligent routing and reliability improvements
## New Features - DNS cache system for target machine availability checking (30s TTL) - Intelligent Fly-Replay handling with automatic fallback to reverse proxy for large requests (>1MB) - Configurable maintenance page support when target machines are unavailable - Method-specific rewrite rules for fine-grained control ## Improvements - Automatic retry with exponential backoff for proxy connection failures - Enhanced static file serving with better tryFiles logic - More robust error handling for machine unavailability scenarios - Smart detection of machine redeployment states ## Documentation - Updated Roadmap.md to reflect smart replay capabilities 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 16b568e commit 47ce2fc

2 files changed

Lines changed: 494 additions & 57 deletions

File tree

Roadmap.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,12 @@ While the application server itself is new, I've been running with this [archite
3636

3737
The primary motivation for the creation of the Navigator tool is twofold: reduce complexity by producing a configuration file that can be directly loaded, and to avoid limitations of the nginx server.
3838

39-
As an example: I want to make replay smarter: the normal case of a misdirected request is that a new user makes a request and fly.io's proxy simply picks a random machine in a nearby region. In such case, a replay is all that is needed. But there also are cases like fly deploy where the destination isn't ready yet, and this can be determined by dynamically checking [internal DNS](https://fly.io/docs/networking/private-networking/#fly-io-internal-dns). Eventually that could lead to starting new machines dynamically, but for now the plan is to have one machine per user, where that machine is stopped or suspended when not in use.
39+
Examples:
40+
* Replay is smart. If content length is greater than a megabyte, a reverse proxy will be used instead.
41+
* Navigator will check dns (and cache the results) before issuing a replay. If the machine is not available, a maintenance page will be shown instead.
42+
* Reverse proxy will retry gateway failures with exponentional fallback.
43+
44+
Eventually that could lead to starting new machines dynamically, but for now the plan is to have one machine per user, where that machine is stopped or suspended when not in use. A single user can still have multiple apps.
4045

4146
## Current status
4247

@@ -50,5 +55,4 @@ I'm currently [building the Navigator](https://github.com/rubys/showcase/blob/ab
5055

5156
```dockerfile
5257
COPY --from=rubys/navigator /navigator /usr/local/bin/navigator
53-
```
54-
58+
```

0 commit comments

Comments
 (0)