Websocket Apache Konfiguration
Hi zusammen,
ich habe privat einen Apache Server, welchen ich schon lange am Laufen habe und auch recht gut damit zurechtkomme. Nun wollte ich mich bei der Entwicklung aber mal mehr mit Websockets beschäftigen und stoße da auf einige Probleme...
Da mein Server privat ist läuft dieser natürlich auf einer DDNS mit einer dynamischen IP Adresse und dem ganzen ist ein NGinx Reverse Proxy vorgeschaltet (falls das am Ende relevant ist).
Ich habe mir für ein neues Testprojekt einen weiteren VHost eingerichtet, mit Subdomain und alles was dazu gehört. Alles auch im NGinx konfiguriert (mit Websocketsupport, HTTP/2 Support, Force SSL). Intern leitet der NGinx allerdings per HTTP weiter.
Am Apache habe ich nun die Module proxy, proxy_http und proxy_wstunnel aktiviert. Lange zeit habe ich es nicht gebacken bekommen, dass ich den Websockt mit über Port 80 nutzen kann und habe erstmal (um den Spaß nicht zu verlieren) den echten WS Port direkt genutzt. Der WS läuft wunderbar. Auch die Testseite läuft. Jetzt wollte ich aber, dass der Websocket ganz normal via Port 80 zugreift. Und da treten meine Probleme auf... inzwischen läuft es so weit, dass ich grundsätzlich eine Websocket Verbindung aufbauen kann, aber diese bricht nach ~2min ab.
Dies ist meine VHost config:
Die Verbindung wird im JS wie folgt aufgebaut:
Wie gesagt, es funktioniert inzwischen... aber nach knapp 1,5 - 2min kickt anscheinend ein Timeout rein und die Verbindung ist weg. Woran kann das liegen? Was habe ich falsch gemacht? Ich danke für eure Unterstützung!
ich habe privat einen Apache Server, welchen ich schon lange am Laufen habe und auch recht gut damit zurechtkomme. Nun wollte ich mich bei der Entwicklung aber mal mehr mit Websockets beschäftigen und stoße da auf einige Probleme...
Da mein Server privat ist läuft dieser natürlich auf einer DDNS mit einer dynamischen IP Adresse und dem ganzen ist ein NGinx Reverse Proxy vorgeschaltet (falls das am Ende relevant ist).
Ich habe mir für ein neues Testprojekt einen weiteren VHost eingerichtet, mit Subdomain und alles was dazu gehört. Alles auch im NGinx konfiguriert (mit Websocketsupport, HTTP/2 Support, Force SSL). Intern leitet der NGinx allerdings per HTTP weiter.
Am Apache habe ich nun die Module proxy, proxy_http und proxy_wstunnel aktiviert. Lange zeit habe ich es nicht gebacken bekommen, dass ich den Websockt mit über Port 80 nutzen kann und habe erstmal (um den Spaß nicht zu verlieren) den echten WS Port direkt genutzt. Der WS läuft wunderbar. Auch die Testseite läuft. Jetzt wollte ich aber, dass der Websocket ganz normal via Port 80 zugreift. Und da treten meine Probleme auf... inzwischen läuft es so weit, dass ich grundsätzlich eine Websocket Verbindung aufbauen kann, aber diese bricht nach ~2min ab.
Dies ist meine VHost config:
<VirtualHost *:80>
ServerName test.example.de
ServerAlias test.example.de
DocumentRoot /var/www/test
<Directory /var/www/test>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php/php8.1-fpm.sock|fcgi://localhost"
</FilesMatch>
RewriteEngine on
RewriteCond ${HTTP:Upgrade} websocket [NC]
RewriteCond ${HTTP:Connection} upgrade [NC]
RewriteRule .* "ws://localhost:8080/$1" [P,L]
ProxyPreserveHost On
ProxyPass "/ws/" "ws://localhost:8080/"
ProxyPassReverse "/ws/" "ws://localhost:8080/"
ProxyRequests off
ErrorLog ${APACHE_LOG_DIR}/team_error.log
CustomLog ${APACHE_LOG_DIR}/team_access.log combined
</VirtualHost>
Die Verbindung wird im JS wie folgt aufgebaut:
var ws_server = new WebSocket("wss://test.example.de/ws/");
Wie gesagt, es funktioniert inzwischen... aber nach knapp 1,5 - 2min kickt anscheinend ein Timeout rein und die Verbindung ist weg. Woran kann das liegen? Was habe ich falsch gemacht? Ich danke für eure Unterstützung!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3222506286
Url: https://administrator.de/contentid/3222506286
Ausgedruckt am: 26.11.2024 um 04:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo,
wenn ich dich richtig verstehe, hast du vom dem Apache, der als Reverse Proxy agiert, noch einen Nginx der ebenfalls als Reverse Proxy agiert? Wofür machst du das?
Welche Timeouts hast du denn auf dem Nginx definiert? Deine Probleme können vom Client, vom Backend und/oder von den Proxies kommen.
Gruß
wenn ich dich richtig verstehe, hast du vom dem Apache, der als Reverse Proxy agiert, noch einen Nginx der ebenfalls als Reverse Proxy agiert? Wofür machst du das?
Welche Timeouts hast du denn auf dem Nginx definiert? Deine Probleme können vom Client, vom Backend und/oder von den Proxies kommen.
Gruß