Same contract as the Apache one -- strip the prefix off the request, tell
the app about it with X-Forwarded-Prefix, keep it to the local network --
with the two things nginx needs that Apache did not: a redirect for the
bare /heos, which would otherwise miss the location and fall through to
the filesystem, and the trailing slash on proxy_pass that does the
stripping.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The app assumed it lived at the server root: its links were /static/...
and its fetches /api/..., which behind a proxy at /heos resolve to the
wrong place, so the page would load and nothing on it would work.
It now takes the prefix from X-Forwarded-Prefix, and everything it
generates -- stylesheet, icons, the manifest's start_url, every fetch --
follows. Nothing changes when it is served from its own port.
deploy/heos.conf is the Apache side, restricted to the local network by
default, since this controls the speakers and the vhost it hangs off has
a public certificate.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>