Useful for kawai and other XMPP services behind the same URL (eg. for serving SSL traffic.)
WebSockets require HTTP/1.1, and prosody assumes traffic on TCP port 5280 is not secure (and trying to force it to starttls) thus requiring the configuration knob highlighted below.
prosody.cfg.lua
consider_websocket_secure = true
nginx.conf
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
# ...
location /xmpp-websocket {
proxy_pass http://127.0.0.1:5280;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}