Websocket mit Apache 2.4.52 und Ubuntu

Websocket mit Apache 2.4.52 und Ubuntu

Ich versuche, dem hier befindlichen Tutorial für das Nachrichtensystem mit RatChet PHP zu folgen. https://www.twilio.com/blog/create-php-websocket-server-build-real-time-even-driven-application Meine Domain heißt example.com und hat eine normale HTML-Seite, die ich als normale Website bereitstellen muss. Für das Nachrichtensystem benötige ich den Port 8445.

also ich habe apache2 auf ubuntu 22.04 installiert lets encrypt ssl site funktioniert gut

Jetzt möchte ich einen WebSocket-Server einrichten, also öffne ich den TCP-Port 8445 in der Firewall

aktivierte Apache-Module

a2enmod-Proxy a2enmod-Proxy_http a2enmod-Proxy_wstunnel

Ich habe meine ursprüngliche Domain durch example.com ersetzt

meine conf-Datei ist wie example.com.conf

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    ErrorLog /var/www/example.com/public_html/logs/error.log
    CustomLog /var/www/example.com/public_html/logs/access.log combined

        ProxyRequests Off
        ProxyPass / https://example.com:8445/
        ProxyPassReverse / https://example.com:8445/

</VirtualHost>

Und

beispiel.com-le-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
    SSLEngine On
    SSLProxyEngine On
    ServerAdmin [email protected]
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    ErrorLog /var/www/example.com/public_html/logs/error.log
    CustomLog /var/www/example.com/public_html/logs/access.log combined

        ProxyRequests Off
        ProxyPass / wss://example.com:8445/
        ProxyPassReverse / https://example.com:8445/


Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
<Location />
        ProxyPassReverse /

        Options FollowSymLinks
        Require all granted
    </Location>

</VirtualHost>
</IfModule>

Wenn ich versuche, eine Verbindung herzustellen, erhalte ich den Fehler 503 und das Apache-Protokoll sagt Folgendes:

[proxy_http:error] [pid 20090] [client 49.34.XX:55961] AH01114: HTTP: Verbindung zum Backend konnte nicht hergestellt werden: example.com [Sat Dec 03 16:47:04.378489 2022] [proxy:error] [pid 20091] (111)Verbindung abgelehnt: AH00957: wss: Verbindungsversuch zu 45.33.XX:8445 (example.com) fehlgeschlagen

Lassen Sie mich wissen, ob mir hier jemand bei der Lösung des Problems helfen kann.

Danke!

Antwort1

Das Problem scheint darin zu liegen, dass der Apache-Proxy keine Verbindung zum Backend-Server auf Port 8445 herstellen kann. Zur Fehlerbehebung können Sie einige Dinge überprüfen:

Überprüfen Sie, ob der WebSocket-Server läuft und auf Port 8445 lauscht. Sie können dies mit dem Befehl netstat überprüfen:

sudo netstat -tlnp | grep 8445

Wenn der WebSocket-Server läuft, sollten Sie eine Zeile wie diese sehen:

tcp        0      0 0.0.0.0:8445            0.0.0.0:*               LISTEN      <websocket server PID>/websocket

Stellen Sie sicher, dass keine Firewalls oder Sicherheitsgruppen den Datenverkehr zu Port 8445 blockieren. Sie können dies überprüfen, indem Sie versuchen, vom Server selbst aus eine Verbindung zum WebSocket-Server herzustellen:

telnet localhost 8445

Wenn die Verbindung erfolgreich ist, sollte ein leerer Bildschirm angezeigt werden. Wenn die Verbindung abgelehnt wird, blockiert möglicherweise eine Firewall oder eine Sicherheitsgruppe den Datenverkehr.

Überprüfen Sie, ob der WebSocket-Server so konfiguriert ist, dass er Verbindungen vom Apache-Proxy akzeptiert. Je nach verwendetem WebSocket-Server kann dies das Festlegen einer bestimmten IP-Adresse oder eines bestimmten Hostnamens zum Abhören oder das Konfigurieren von Zugriffskontrolllisten (ACLs) zum Zulassen von Verbindungen von der IP-Adresse des Apache-Servers umfassen.

Überprüfen Sie die Protokolle des WebSocket-Servers, um festzustellen, ob Fehlermeldungen vorliegen, die darauf hinweisen, warum die Verbindung abgelehnt wird.

verwandte Informationen