Thank you! I missed that.
Disabling web status breaks HTTP healthchecks though, since crossbar also responds with 426.
So what is did in the end is:
a). Disabled web status (generating templated html every 10 seconds just for healthchecks seems like a waste)
b). Requiring websocket upgrade in the reverse-proxy as per my above example to block any "outgoing" html
c). Switched to web transport with a separate path for healthchecks. Along the way I hit the
issue that crossbar leaks sever version in web transport. Not a biggie, since it's just for internal K8s healthcheck
# Main transport - requires authentication
- type: web
endpoint:
type: tcp
port: 5555
paths:
healthz:
type: static
directory: /var/lib/crossbar/health
options:
show_server_version: false
ws:
type: websocket
...
(I then mount an OK index.html file from K8s configmap under /var/lib/crossbar/health)