@GnuLinuxDude Since I'm a fan of Caddy I'll add in one little trick I recently found.
I have a use case where I might get requests in the first few seconds, while the reverse-proxied application is still starting up. Caddy actually has a load balancer built in. It's a bit overkill for the use case but it works:
https://caddyserver.com/docs/caddyfile/directives/reverse_proxy#load-balancing
Just make sure to set both lb_try_duration and lb_retries (seems redundant but whatever) and your early requests will wait until the app starts!
Perhaps it's super niche. I'm packaging apps for something called Sandstorm (https://sandstorm.org) which has a unique model. The apps are small and run in containers. They're asleep after a period of inactivity. You want to be able to click on your app and see something useful load on your browser, even if it has to take a couple seconds to wake up.
Sometimes our apps include Nginx/Caddy/etc with a reverse-proxy. Caddy can start faster than the app so it's nice that Caddy can wait for it.