I’d start an SSH shell using fly ssh shell and run wget -O- http://localhost:9999 to check that the app’s process is actually listening on port 9999 (you may need to install wget).
It might also be worth running fly ips list to check that you have a dedicated IPv4 address rather than a shared IPv4 address (which doesn’t support non-standard ports). TYPE should be “public” rather than “public (shared)”. (But fly deploy should have given you a clear error message if you had a shared IPv4.)
Thanks Tom.
I was using shared IPv4, but fly deploy does not give me error message.
May I know where is the document saying shared IPv4 does not support non-standard port?
fly deploy used to display an error message if fly.toml contained non-standard ports and the app had a shared IPv4 address (announcement, example); maybe the error message was removed/changed, no idea if it’s intentional – might need fixing. (A random guess, since I can’t check right now: The fly.toml on which I got the error message had a single [[services]] section with public ports 80 (http), 443 (tls+http), and 5000 (http). Your fly.toml has two [[services]] sections, maybe the error checking code doesn’t detect that case. If so, it might need to be fixed.)