ubuntuusers.de

websocket hinter Reverse Proxy

Status: Gelöst | Ubuntu-Version: Server 20.04 (Focal Fossa)
Antworten |

DerT94

Anmeldungsdatum:
17. April 2020

Beiträge: 14

Hallo zusammen,

ich bin gerade dabei mir einen Server aufzusetzen welchen ich verwenden kann um mich in mein Netzwerk einzuwählen. Prinzipiell soll es ein simpler Ubuntu Server mit grafischer Oberfläche sein welche über noVNC erreichen kann. Das ganze funktioniert auch schon recht gut.

Ich habe einen Ubuntu Server 20.04 aufgesetzt und über Xfde und TigerVNC ein Display bereitgestellt. Auf dieses kann ich auch schon über noVNC und websockify zugreifen. https://github.com/novnc/noVNC

Leider scheitere ich daran, dass ganze nun über meinen reverse Proxy zum laufen zu bekommen. Wenn versuche über die konfigurierte Adresse darauf zuzugreifen bekomme ich zwar das noVNC Startbild, aber beim klick auf "verbinden" erhalte ich einen Fehler. (Siehe Anhang)

Apache Version: 2.4.41

Meine VirtualHost Datei sieht wie folgt aus.

<VirtualHost *:80>
 ServerName remote.example.com
 ProxyPreserveHost On
 ProxyPass /.well-known !
 ProxyPass / http://dialin.example.loc:6081/
 ProxyPassReverse / http://dialin.example.loc:6081/
 ProxyPass / ws://dialin.example.loc:6081/ retry=3
 ProxyPassReverse / ws://dialin.example.loc:6081/
</VirtualHost>

Die folgenden Module sind aktiviert.

Enabled Apache Modules:
core_module (static)
so_module (static)
watchdog_module (static)
http_module (static)
log_config_module (static)
logio_module (static)
version_module (static)
unixd_module (static)
access_compat_module (shared)
alias_module (shared)
auth_basic_module (shared)
authn_core_module (shared)
authn_file_module (shared)
authz_core_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
deflate_module (shared)
dir_module (shared)
env_module (shared)
filter_module (shared)
headers_module (shared)
mime_module (shared)
mpm_event_module (shared)
negotiation_module (shared)
proxy_module (shared)
proxy_ajp_module (shared)
proxy_balancer_module (shared)
proxy_connect_module (shared)
proxy_html_module (shared)
proxy_http_module (shared)
proxy_wstunnel_module (shared)
reqtimeout_module (shared)
rewrite_module (shared)
setenvif_module (shared)
slotmem_shm_module (shared)
socache_shmcb_module (shared)
ssl_module (shared)
status_module (shared)
xml2enc_module (shared)

Final möchte ich das ganze dann noch mit einem Lets Encrypt Zertifikat über den certbot verschlüsseln. (Das sollte ich aber hinbekommen, da ich es schon bei anderen Seiten auf diesem Proxy gemacht habe)

Ich habe das Problem auch schon also Fehler auf der Github Seite von websockify gepostet. Leider konnte man mir dort nicht weiterhelfen. https://github.com/novnc/websockify/issues/434

Trotzdem noch eine allgemeine Verständnis Frage. Wenn ich aus dem Internet über https mit meinen ReverseProxy kommuniziere ist dieser Traffic ja verschlüsselt. Muss ich dann die Verbindung zwischen dem RevesreProxy und dem jeweiligen Server auch über Port 443 laufen lassen oder reicht hier Port 80? Nach meinem Verständnis kann der Traffic zwischen Reverse Proxy und Browser nicht ausgelesen werden da er verschlüsselt ist. Der Traffic zwischen ReverseProxy und dem Anwendungsserver jedoch könnte ausgelesen werden. Bin ich da richtig?

Danke und Gruß T

DerT94

(Themenstarter)

Anmeldungsdatum:
17. April 2020

Beiträge: 14

Ich konnte das Problem nun selbst lösen. Die Lösung war die folgende Seite https://www.happyassassin.net/posts/2018/11/23/reverse-proxying-websockets-with-apache-a-generic-approach-that-works-even-with-firefox/. Hier wurde generell erklärt wie die Weiterleitung von Websockets funktioniert und damit konnte ich es lösen.

Meine VirtualHost Datei sieht nun wie folgt aus.

<VirtualHost *:80>
 ServerName remote.example.com
 RewriteEngine on
 RewriteCond %{HTTP:Upgrade} websocket [NC]
 RewriteCond %{HTTP:Connection} upgrade [NC]
 RewriteRule .* "ws://dialin.example.loc:6081%{REQUEST_URI}" [P]
 ProxyPass / http://dialin.example.loc:6081/
 ProxyPassReverse / http://dialin.example.loc:6081/
</VirtualHost>
Antworten |