So, I have 3 fly apps in an organisation: nginx
, api
and ui
All of them have have essentially the same [http_service]
block, just with differing internal_port
[http_service]
internal_port = 80
force_https = true
auto_stop_machines = true
auto_start_machines = true
min_machines_running = 0
processes = ['app']
nginx
is the reverse proxy
Initially, I set the upstreams to http://ui.fly.dev
and http://api.fly.dev
, which works perfectly.
If any of the apps go to sleep/shut down, they are automatically restarted, which is excellent.
However, I don’t really want the ui
and the api
to be “on the internet”.
My first thought was to change the upstreams to http://ui.internal:3000
and http://api.internal:8080
.
Initially, this did work.
However, this seemed to be a coincidence. Once ui
and api
scaled to 0, nginx
could not connect to the upstreams, and they never restarted.
What I assume this means, is that Fly Proxy is doing the start/stop, and this only works on the public DNS
Is this assumption correct:
If I want apps to auto-start
and auto-stop
, then I MUST have a service/http-service
, and I MUST access them via the *.fly.dev
DNS
So essentially, I CANNOT have the following “stack”:
API with 2 instances, that is able to go from 0 to 2 to 0, which does NOT have a public DNS
UI with 2 instances, that is able to go from 0 to 2 to 0, which does NOT have a public DNS
nginx with 2 instances, that is able to go from 0 to 2 to 0, which DOES have a public DNS, and serves the “private” api
and ui