External Routes Configuration
External routes allow proxying to non-containerized services running on the host or network.
Configuration
[external_routes]
"service.mydomain.com" = "localhost:3000"
"cache.mydomain.com" = "192.168.1.100:6379"
Syntax
[external_routes]
"<domain>" = "<host>:<port>"
| Component | Description |
|---|---|
domain |
Fully qualified domain name |
host |
Target hostname or IP address |
port |
Target port number |
Use Cases
Database Admin Tools
Proxy to database admin interfaces:
[external_routes]
"pgadmin.mydomain.com" = "localhost:5050"
"redis-commander.mydomain.com" = "localhost:8081"
Legacy Services
Proxy to services that can't be containerized:
[external_routes]
"legacy-api.mydomain.com" = "192.168.1.50:8080"
How It Works
- Request arrives for
service.mydomain.com - Gordon checks if domain matches an external route
- If matched, proxies directly to the configured
host:port - No container lookup is performed
Client ─> Gordon Proxy ─> External Service
(port 80) (configured host:port)
Limitations
- HTTP only (no HTTPS upstream)
- No health checks
- No load balancing
Hot Reload
External routes reload automatically when the config file changes:
# Edit config
vim ~/.config/gordon/gordon.toml
# Add external route
[external_routes]
"newservice.mydomain.com" = "localhost:9000"
# Save - Gordon reloads automatically