http-bind / bosh nach update auf prosody 0.9

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"