Nach einem Update von Prosody von einer Version der 0.8er – Reihe auf 0.9.1 läuft der bosh-Dienst nicht mehr. Ein vorgeschaltetes candy.js zeigt in der Debugkonsole an, daß der Server für die URL “/http-bind” ein 404 zurückliefert.
Interessant ist, daß die Server-Konfiguration bei dem Update nicht geändert wurde. Allerdings haben sich die Optionen für die http- und bosh-Plugins geändert.
Sucht man im Internet nach diesem Problem werden Hinweise gegeben die folgenden Einstellungen auszuprobieren:
http_paths = { bosh = "/http-bind"; -- Serve BOSH at /http-bind files = "/"; -- Serve files from the base URL }
http_default_host = "localhost"; -- Do not require SSL for bosh connections: consider_bosh_secure = true; -- Allow unencrypted auth (disallowed by default) allow_unencrypted_plain_auth=true; -- Set CORS http header: cross_domain_bosh = true;
Letzlich hat keine der genannten Einstellungen etwas bewirkt, wobei http_default_host
schon in die richtige Richtung geht. Eine weitere neuerung von 0.9 ist nämlich, daß die http-Komponente den host
im http-Header überprüft und nur antwortet, wenn dieser den Einstellungen entspricht. Dabei hat die http_default_host
– Einstellung keine Auswirkung auf VirtualHosts.
Die Lösung ist deshalb, explizit den Host-Namen nach einer VirtualHost-Definition anzugeben. Nachdem Apache als Frontend dient kommen für Prosody die Verbindungen vom lokalen Interface, weshalb “localhost” hier richtig ist:
VirtualHost "example.com" http_host = "localhost"