Autor Thema: Apache2 als Reverse Proxy mit websocket für FHEM  (Gelesen 1135 mal)

Offline Brause

  • Jr. Member
  • **
  • Beiträge: 51
Antw:Apache2 als Reverse Proxy mit websocket für FHEM
« Antwort #15 am: 24 Februar 2017, 07:05:43 »
also ich habe von nginx keine Ahnung, aber ein kurze suche bei google (nginx redirect websocket)  führte mich da hin:

https://www.nginx.com/blog/websocket-nginx/

also scheinbar  via node.js und dazu findest du hier auch was im Forum
FHEM auf NUC, HomeMatic, Netatmo, IT una.

Offline h3llsp4wn

  • Full Member
  • ***
  • Beiträge: 178
Antw:Apache2 als Reverse Proxy mit websocket für FHEM
« Antwort #16 am: 26 Februar 2017, 16:03:23 »
@mumpiz: Habe meine ngnix (kein Anspruch auf Ideallösung) in diesem Unterforum gelistet. Kannst ja mal schauen - ohne Mode.js

Offline phil82

  • New Member
  • *
  • Beiträge: 22
Antw:Apache2 als Reverse Proxy mit websocket für FHEM
« Antwort #17 am: 02 April 2017, 14:18:09 »
Hallo zusammen,

nach langer langer Suche und vielen Versuchen läuft jetzt auch mein Reverse Proxy mit Websocket unter Apache2.
Ich will das Thema hier nicht wieder aufwärmen, aber vielleicht hilft meine Lösung dem ein oder anderen.

Ich musste bei mir das Apache-Modul proxy_wstunnel aktiviert wird. Ohne das Modul startet zwar der Apache. Die websocket Aufrufe funktionieren aber nicht.
a2enmod proxy_wstunnel
service apache2 restart


Für "Tablet-UI" mit Websocket musste ich in der Header-Konfiguration vom Tablet-UI das WebDevice von FHEM definieren:
<meta name='web_device' content='guiWeb'>Der Standardwert ist WEB. Bei Longpoll mit AJAX war das nie ein Problem, bei WebSocket schon.


Die Site-Config sieht bei mir genauso aus wie von klausw geschrieben:
        <Location /fhem>
                #Für Logpoll = Websocket die Aufrufe umleiten
                RewriteEngine On
                RewriteCond %{HTTP:Upgrade} =websocket [NC]
                RewriteRule /fhem(.*)           ws://localhost:8083/fhem$1 [P,L]
                RewriteCond %{HTTP:Upgrade} !=websocket [NC]
                RewriteRule /fhem(.*)           http://localhost:8083/fhem$1 [P,L]

                # ProxyPass/ProxyPassReverse leitet HTTP requests auf eine andere URL um
                ProxyPass http://localhost:8083/fhem
                ProxyPassReverse http://localhost:8083/fhem
                ProxyHTMLEnable On

                # ProxyHTMLURLMap passt Links im HTML/JavaScript Source an
                ProxyHTMLURLMap /        /fhem/
                ProxyHTMLURLMap /fhem/     /fhem/
              ......
        </Location>
Wichtig ist auch hier, dass die RewriteRule nicht "/fhem/" heißen, sondern nur "/fhem".
FHEM nutzt als WebSocket URL "https://fhemserver:xxxx/fhem?XHR=1&inform=type..." und da sind kleine "/" mehr.



Ich hab zwischenzeitlich meine gesamte Apache-Konfiguration zerschossen, da ich auf den folgenden Hinweis im Wiki "reingefallen" bin:
ln -s /etc/apache2/mods-available/proxy_html.conf /etc/apache2/mods-enabled/proxy_html.confBei mir darf ich die Verlinkung nicht durchführen.
Mit der proxy_html.conf funktioniert der gesamte Reverse Proxy nicht mehr. So ganz verstanden hab ich das aber nicht.


Vielleicht helfen die Hinweise dem ein oder anderen



Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 2907
Antw:Apache2 als Reverse Proxy mit websocket für FHEM
« Antwort #18 am: 03 April 2017, 11:20:47 »
Eigentlich (laut Doku) muß man mod_proxy aktivieren, da proxy_wstunnel darauf anbaut ...
https://httpd.apache.org/docs/2.4/mod/mod_proxy_wstunnel.html

Aber wenn es funktioniert ....
- Bitte um Input für Output
- When there is a Shell, there is a Way

FHEM auf Gentoo/Ubuntu-Server
incl. CUL (433,868), JeeLink und SISPM

 

decade-submarginal