nginx reverse proxy aktualisiert nicht beim Schalten

Begonnen von MiK77, 21 November 2020, 23:55:33

Vorheriges Thema - Nächstes Thema

MiK77

Hallo,

ich habe mich nun endlich aufgerafft und einen reverse proxy mittels nginx vor fhem geschaltet.
Dafür habe ich die nginx-Konfiguration aus dem Wiki https://wiki.fhem.de/wiki/HTTPS-Absicherung_&_Authentifizierung_via_nginx_Webserver verwendet.

Dies funktioniert mittlerweile grundsätzlich auch, nur erhalte ich nun keine Statusänderungen mehr. Wenn ich z.B. auf einen Schalter klicke, schaltet sich das entsprechende Gerät zwar ein, aber das Lampensymbol auf der Webseite zeigt immer noch "aus" an.

Greife ich direkt auf diese fhemWeb-Instanz zu, funktioniert es einwandfrei. Ich vermute deswegen einen Fehler in der Konfiguration von nginx.

Ist dies ein bekanntes Problem bei der Konfiguration aus dem Wiki oder habe ich da einen Fehler eingebaut?

server {
    listen 8080 ssl;
    server_name fhempi;

    # check user agent
    if ($http_user_agent ~* '(iPhone|iPod|Opera Mini|Android.*Mobile|NetFront|PSP|BlackBerry|Windows Phone)') {
    set $ua_type "@mobile";
    }

    ssl_certificate           /etc/nginx/cert.crt;
    ssl_certificate_key       /etc/nginx/cert.key;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log            /var/log/nginx/fhem.access.log;

    location / {

      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;

      # Gehe zu FHEMWEB wenn kein mobiler Browser
      if ($ua_type != "@mobile"){
          proxy_pass          https://127.0.0.1:8088;
      }
      # Gehe zu FHEMWEB smallscreen wenn mobiler Browser
      if ($ua_type = "@mobile"){
          proxy_pass          https://127.0.0.1:8088;
      }
      proxy_read_timeout  90;
      #proxy_read_timeout  20736000;
      #proxy_buffering     off;

      # User Sickboy's Erweiterung für verschlüsselte Websocket-Kommunikation (siehe Diskussionsseite)
      # Für normale Benutzer derzeit kommentiert, vom Autor Andremotz noch bisher ungetestet
      #  ... daher derzeit auskommentiert
      # Wird für 'longpoll' benötigt (z.B. bei FTUI)
      #set $my_http_upgrade "";
      #set $my_connection "Connection";

      #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;

      auth_basic "Login required";
      auth_basic_user_file /etc/nginx/.htpasswd;

      # proxy_redirect      http://localhost:8083 https://localhost;
    }
  }


Ciao

MiK

micky0867

Hi,

bei mir funktioniert das....aber der entscheidende Unterschied...keine Ahnung.

Meine Konfig:

        location /fhem {
                proxy_pass http://rp2.fritz.box:8083/fhem;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_buffering off;
                proxy_ignore_client_abort off;
                break;
        }

MiK77

Vielen Dank! Ich habe folgendes von Dir übernommen:

                proxy_set_header Upgrade $http_upgrade;
                proxy_buffering off;
                proxy_ignore_client_abort off;


Damit geht es. Weitere Tests haben ergeben, dass es an dieser einen Zeile liegt:

                proxy_buffering off;

Keine Ahnung, warum das im Wiki auskommentiert ist.

Wernieman

Warum hast Du die ganzen "if" drin, wenn Du bei allen den gleichen Parameter verwendest?

Ich würde Dir empfehlen, die config zu "clearen"
- 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

MiK77

Ich habe vor in Zukunft doch wieder für Mobil-Clients etwas anderes auszuliefern. Im Moment habe ich da aber noch ein kleines Problem damit. Deswegen habe ich die Unterscheidung erst einmal drin gelassen.

Ansonsten ist das eben mehr oder weniger 1:1 der Config-Vorschlag aus dem Wiki.