Hauptmenü

FHEMWEB mit nginx

Begonnen von fs3o1o, 28 Januar 2019, 13:04:46

Vorheriges Thema - Nächstes Thema

fs3o1o

Hallo,

ich greife auf FHEMWEB über nginx zu. Funktioniert soweit alles, bis auf die Ausgabe aus der Konsole im FHWEMWEB wie z.B. auf "update" oder "{ 1+3*4 }" oder egal was.
Der Eventmonitor funktioniert auch ohne Probleme.

Wenn ich ohne Proxy darauf zugreife tritt das Problem nicht auf.

Kann mir jemand helfen?

Anbei noch meine nginx Config zu FHEMWEB:

# Fhem
        location /fhem/ {
        proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
proxy_pass http://127.0.0.1:8084;
proxy_redirect default;
proxy_buffering off;
        proxy_read_timeout 2073600;
        proxy_ignore_client_abort off;
break;
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/***.htpasswd;
        }

fs3o1o

Ich habe mittlerweile rausgefunden, dass wohl folgendes in der fhemweb.js dafür verantwortlich ist.

if(typeof window.console != "undefined")
    console.log(txt);


Woher kommt "window.console"? Wodurch wird der Wert gesetzt?

Wernieman

also bei mir sieht es wie folgt aus (natürlich <....> angepasst):
    location /fhem {
        auth_basic              "Restricted Content";
        auth_basic_user_file    <htpaswd-pfad>/.htpasswd;

        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto $scheme;
        proxy_http_version      1.1;

        # if ($http_upgrade = "websocket") {
        #    set $my_http_upgrade $http_upgrade;
        #    set $my_connection "upgrade";
        # }
        # proxy_set_header      Upgrade $my_http_upgrade;
        # proxy_set_header      Connection $my_connection;

        proxy_pass              http://<fhem-server>:8083;
        proxy_read_timeout      90;
        proxy_buffering         off;
        client_max_body_size    128M;
    }
- 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

fs3o1o

Hallo, danke für die Antwort. Bis auf Details meine Einstellungen. Hab auch mal genau deine versucht, selbes Problem.

Wenn ich über den Proxy in der Kommandozeile etwas eingebe und Enter drücke, wird die Seite neu geladen. Beim direkten Zugriff auf die FHEMWEB instanz nicht.

Ich vermute dass es damit etwas zu tun hat. Ich finde aber nichts woran es liegen könnte...

Wernieman

Dann probiere mal longpoll zu setzen ... nur fürs testen
- 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

fs3o1o

Hab Longpoll auf Websocket...

Wernieman

Nee .. setzte mal "longpoll" auf 1.

Websocket dürfte Dein Problem sein ..
- 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

det.

Hallo Werniemann,
hab hier mal mitgelesen und Deinen Code in /etc/nginx/templete/security reingeschrieben, ehemals auskommentierte Zeile https://forum.fhem.de/index.php/topic,96461.msg895653.html#msg895653 wieder reingenommen und noch einen ungewöhnlichen usernamen + sicheres Passwort vergeben. - Läuft! Danke!
Hoffe trotzdem noch auf die gelegentliche Fortsetzung der Nachhilfestunde in Sachen Computersicherheit...
LG
det.

fs3o1o

Danke für den Tip, aber das ist es auch nicht. Hab ich auch schon alles versucht...  :(

Wernieman

Sorry der Nachfrage, aber hast Du mal "genau" meine Version probiert? Kann Dein Problem wirklich nicht nachvollziehen ....
- 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

fs3o1o

Problem gelöst   ::)

meine Einstellungen waren die selben... Fast...

meine location war als /fhem/ definiert statt /fhem.
Mit dem abschliessenden Backslash ist sichergestellt, dass z.B. /fhem2 eine eigene location sein kann und nicht schon bei der location /fhem matcht und man dann falsch raus kommt. Problem ist aber dass der Endpunkt der Websocket Connection exakt /fhem ist und eben nicht /fhem/.

Danke für deine Hilfe!

Vielleicht könnte man den Endpunkt der Websocketconnection auf "Webname"/ws wie z.B. /fhem/ws umstellen...
Würde die Reverseproxygeschichte etwas vereinfachen.