Howdy @allen-woods, welcome to the Caddy community.
Depends on the use case.
Theoretically you could develop your apps as Caddy apps in Go, complete with native JSON or Caddyfile configuration options, and they would run as Caddy itself does.
Alternately you could rely on Caddy’s http app and reverse proxy over ports or unix sockets to your upstream apps.
Not too familiar with WebAssembly myself, but I’m pretty sure this is all portable and client-side. Delivery is packaged with JavaScript, no? If the payload is transferred to the client via standard HTTP, Caddy should definitely have you covered.
You might have to forgive me in turn, I’m not entirely sure what you mean here.
Closest thing I can think of would be virtual hosts. Caddy can absolutely multiplex websites on the same port distinguished by hostname and abstract away the upstream servers’ ports so the client doesn’t see them, the client just sees the hostname.
What I meant in question 3 was something like this:
App 1 on caddy port 9000 would map to mysite.com**/app1endpoint**, not mysite.com**:9000**
App 2 on caddy port 9001 would map to mysite.com**/app2endpoint**, etc.
Can I do this in Caddy?
Or should I be using Nginx pointed at docker-compose instead of using Caddy?