Autor Thema: [gelöst] SmartVisu über zwei NGINX  (Gelesen 692 mal)

Offline Saphora

  • Full Member
  • ***
  • Beiträge: 144
[gelöst] SmartVisu über zwei NGINX
« am: 12 September 2021, 23:11:54 »
Hallo,
hat von euch jemand SmartVisu über zwei NGINX aktiv?
Möchte gern SmartVisu von extern über NGINX darstellen.
SmartVisu selbst wird über einen eigenen NGINX betrieben.
Mein NGINX für das Internet läuft aber auf einem anderen Server.
Daher würde ich gern vom Internet NGINX zum SmartVisu NGINX weiterleiten.
Das klappt auch soweit, dass SmartVisu angezeigt wird.
Aber es sind keine Werte sichtbar (Values, Button On/off...).
Im Fronthem ist die IP des Internet NGINX hinterlegt, aber das Fronthem Device m FHEM bleibt auf disconnected.
Am SmartVisu NGINX kommen die Anfragen mit der IP des Internet NGINX an, die auch als Fronthem Device angelegt ist.

Kennt jemand das Problem?

Martin
« Letzte Änderung: 16 September 2021, 22:05:56 von Saphora »

Online Wernieman

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7567
Antw:SmartVisu über zwei NGINX
« Antwort #1 am: 13 September 2021, 13:34:33 »
Du verwendest also NGINX als Reverse-Proxy für den Internen Webserver (NGINX)

- Kannst Du uns bitte die Config des Reverse-Proxys geben?
- Der Interen Webserver funktioniert wie gewünscht?

Kenne jetzt SmartVisu nicht genau, aber bei FHEM selber würde ich Dir raten, Testweise mal LongPoll zu aktivieren
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Offline Saphora

  • Full Member
  • ***
  • Beiträge: 144
Antw:SmartVisu über zwei NGINX
« Antwort #2 am: 13 September 2021, 21:59:19 »
ja NGINX als interner Webserver für Smartvisu.
Das funktioniert auch einwandfrei, wenn es direkt aufgerufen wird.
Kommt nun der zweite NGINX ins Spiel, wird nur die Smartvisu Seite angezeigt, aber FHEM liefert keine Werte usw.

Hier die Konfigurationen für den NGINX intern
server {
        listen 192.168.178.2:80;
        server_name 192.168.178.2;

        root /var/www/html;
        index index.php index.html index.htm index.nginx-debian.html;

        location / {
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
                 try_files $uri =404;
                 fastcgi_split_path_info ^(.+\.php)(/.+)$;
                 fastcgi_pass unix:/run/php/php7.4-fpm.sock;
                 fastcgi_index index.php;
                 include fastcgi.conf;
                 fastcgi_read_timeout 600;
         }
}



Hier die Konfigurationen für den NGINX extern
upstream backend-smartvisu {
        server 192.168.178.2;
}

server {
        listen                meinedomain.de:443 ssl;
        server_name     meinedomain.de;

...
SSL
...

       location /smartvisu
                {
                proxy_pass http://backend-smartvisu;
                }
}

Online Wernieman

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7567
Antw:SmartVisu über zwei NGINX
« Antwort #3 am: 14 September 2021, 08:43:29 »
Habe jetzt meinen eigenen Nginx-Reverseproxy nicht im Zugriff, aber es fehlen so einige Parameter bei der location des Reverse-Proxys. Gibt dazu auch Threads im Forum. Suche mal nach nginx ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Offline Saphora

  • Full Member
  • ***
  • Beiträge: 144
Antw:SmartVisu über zwei NGINX
« Antwort #4 am: 14 September 2021, 22:04:39 »
Die folgenden Header sind gesetzt, bringen aber keinen Erfolg...

        proxy_http_version        1.1;
        proxy_set_header          Upgrade $http_upgrade;
        proxy_set_header          Host $host;
        proxy_set_header          X-Real-IP 192.168.178.3;                    #Setzt Client IP, wenn aus dem Internet kommt, da diese im Frothem zugelassen ist
        proxy_set_header          X-Forwarded-For 192.168.178.3;          #Setzt Client IP, wenn aus dem Internet kommt, da diese im Frothem zugelassen ist
        proxy_set_header          X-Forwarded-Proto $scheme;

Die SmartVisu Seite wird ohne Probleme angezeigt, aber im FHEM wird das Fronthem Device nicht als aktiv angezeigt.
« Letzte Änderung: 14 September 2021, 22:24:48 von Saphora »

Online herrmannj

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 5995
Antw:SmartVisu über zwei NGINX
« Antwort #5 am: 14 September 2021, 22:25:46 »
Du brauchst auch websocket. Außerdem muss für jedes end-device eine unterschiedliche (individuelle) IP weitergeleitet werden.
smartVisu mit fronthem, einiges an HM, RFXTRX, Oregon, CUL, Homeeasy, ganz viele LED + Diverse
Zustimmung Zustimmung x 1 Liste anzeigen

Online Wernieman

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7567
Antw:SmartVisu über zwei NGINX
« Antwort #6 am: 15 September 2021, 08:53:58 »
Und zusätzlich nicht mit echten IPs, sondern mit Variablen arbeiten.

proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host; 
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

Hinwies: Obiges aktuell nur apgetippt, Fehler können enthalten sein, da nicht getestet
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html
Zustimmung Zustimmung x 1 Liste anzeigen

Offline Saphora

  • Full Member
  • ***
  • Beiträge: 144
Antw:SmartVisu über zwei NGINX
« Antwort #7 am: 15 September 2021, 21:35:49 »
Du brauchst auch websocket. Außerdem muss für jedes end-device eine unterschiedliche (individuelle) IP weitergeleitet werden.
Warum wird Websocket benötigt, wenn es über zwei NGINX geht? Mit der IP meinst du sicherlich das fronthemDevice?

Und zusätzlich nicht mit echten IPs, sondern mit Variablen arbeiten.

proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host; 
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

Hinwies: Obiges aktuell nur apgetippt, Fehler können enthalten sein, da nicht getestet
Das mit den Variablen kenne ich normalerweise auch so, dass die echte Client-IP zum Webserver weitergegeben wird. Nur wird in dem fronthemDevice fest vorgegeben welche IP die Werte sehen darf. ist wie ein Whitelisting. Beim Internetzugriff wäre so nicht möglich. Daher die IP des Reverse Proxy, um diese zuzulassen. So war zumindest meine Idee.

Online Wernieman

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7567
Antw:SmartVisu über zwei NGINX
« Antwort #8 am: 15 September 2021, 22:15:58 »
Websocket ist wichtig, da dadurch die Daten ermittelt werden. Im Normalfall verwendet nginx bei Proxy-Verbindungen keine websocket-Verbindung .. und damit ist auch klar, warum Du keine Daten empfängst ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Offline Saphora

  • Full Member
  • ***
  • Beiträge: 144
Antw:SmartVisu über zwei NGINX
« Antwort #9 am: 15 September 2021, 23:35:58 »
So genau hatte ich mir die Kommunikation nicht angesehen.
Aber wenn ich es richtig verstehe, dann baut der Client eine Websocket Verbindung zu FHEM auf, um sich die Daten zu holen?
Bin davon ausgegangen, dass dies über SmartVisu passiert.
Im Webbrowser ist zu sehen, dass der Browser eine Direktverbindung zum FHEM aufbauen möchte, statt über NGINX.
Muss das irgendwo definiert bzw. angegeben werden, dass der Websocket über die Domain des Reverse Proxy aufgebaut werden soll und nicht direkt?

Offline Saphora

  • Full Member
  • ***
  • Beiträge: 144
Antw:SmartVisu über zwei NGINX
« Antwort #10 am: 16 September 2021, 22:05:26 »
Es war in der Tat der Websocket.
Habe die Kommunikation falsch angenommen.
Danke der Hinweise und Hilfe  :D