nginx als Pub/Sub Server einsetzen
Das bedeutet leider auch, dass nginx neu kompiliert werden muß. Eigentlich nutze ich immer lieber die vorkonfigurierten Pakete aus dem Debian Repository, einen Vorteil hat das ganze aber: um das Modul nginx-push-stream-module zu aktivieren, kann man auch gleich die aktuelle Stable Version von nginx installieren (in meinem Fall derzeit 1.20.x).
Sind die neuen Binaries erstmal mit der Konfiguration
./configure --with-http_auth_request_module --add-module=../nginx-push-stream-module ...und alle weiteren conf-Optionen
erstellt und installiert, nehmt ihr das Modul via nginx.conf in Betrieb. In meinem Fall nutze ich die Publisher Funktion mit einer vorgeschalteten Authorisierung und als Subscriber die websocket Option:
http {
push_stream_shared_memory_size 64M;
push_stream_max_channel_id_length 64;
....
Die Server Sektion sieht dann so aus:
set $request_url $request_uri;
location /auth {
set $request_url /srvx/user/auth.json;
rewrite ^/auth /srvx/index.php?$args;}
location /pub {
auth_request /auth;
push_stream_publisher admin;
push_stream_channels_path $arg_id;
push_stream_channel_info_on_publish on;
push_stream_store_messages on;
add_header Access-Control-Allow-Origin "*";
add_header Access-Control-Allow-Headers "Origin, Content-Type, X-DWT-UID, X-DWT-SIG, X-DWT-TOKEN";
}location ~ /sub {
push_stream_subscriber websocket;
push_stream_channels_path $arg_id;
push_stream_message_template "{\"i\":~id~,\"c\":\"~channel~\",\"m\":\"~text~\", \"t\":\"~time~\"}";
push_stream_ping_message_interval 10s;add_header Access-Control-Allow-Origin "*";
add_header Access-Control-Allow-Headers "Origin, Content-Type, X-DWT-UID, X-DWT-SIG, X-DWT-TOKEN";}