Ankündigung

Einklappen
Keine Ankündigung bisher.

Reverse Proxy - Websocket Zugriff

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Reverse Proxy - Websocket Zugriff

    Hallo zusammen,

    nach dem Umstieg auf 2.9 möchte ich mich dem Thema Reverse Proxy nochmals annehmen.

    Situation:
    Ich habe eine aktuelle Installation SmartVisu 2.9 (git branch develop) und smarthome.py (git branch master).
    Apache läuft auf Port 80 - für das lokale Netzwerk - tut prima.
    Nginx soll auf Port 443 als Reverse Proxy. Port-Freischaltung auf dem Router dafür ist erfolgt.

    Beim Zugriff über den Reverse Proxy bekomme ich die SmartVisu angezeigt, aber keine Informationen über die Websockets.

    Frage: Müssen auch im aktuellen Code noch Anpassungen am Treiber io_smarthome.py.js vorgenommen werden?

    Habe ich irgendwas anderes übersehen? Nginx config wie folgt:

    Code:
    server {
            listen 443 ssl default_server;
    
            server_name smarthome.meinedomain.de;
            server_tokens off;
            access_log /var/log/nginx/smarthome.log combined;
            #error_log /var/log/nginx/error.smarthome.log debug;
            include /etc/nginx/conf.d/letsencrypt;
    
            location /smarthome {
                    auth_basic "smarthome";
                    auth_basic_user_file /etc/nginx/htpasswd;
                    proxy_pass http://192.168.0.245/smarthome/;
                    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;
            }
    
            location = / {
                    auth_basic "smarthome";
                    auth_basic_user_file /etc/nginx/htpasswd;
                    proxy_pass http://192.168.0.245:2424;
            }
    }

    SmartVisu:

    Code:
    driver = "smarthome.py"
    driver_address = "192.168.0.245"
    driver_autoreconnect = true
    driver_port = "2424"
    smarthome.py:

    Code:
    websocket:
         plugin_name: visu_websocket
         #ip: 0.0.0.0
         #port: 2424
         #tls: yes
         wsproto: 4
         acl: rw
    Danke fürs drauf schauen.
    Grüße Thomas
    Zuletzt geändert von wvhn; 26.09.2020, 22:13. Grund: Status gelöst gesetzt

    #2
    Nein es müssen keine Änderungen mehr anderjs gemacht werden. Aber eigentlich wenn du schon apache hast, brauchst du nicht extra nginx als reverse proxy.

    Ich habe dazu schon eine Anleitung auf der smarthomeNG Seite angelegt.

    https://www.smarthomeng.de/reverse-p...isu-mit-apache

    Grüße ebenfalls zurück,
    Thomas

    Kommentar


      #3
      Hallo Thomas,

      danke. Habe ich eben mal ausprobiert. Leider genau das gleiche Problem.
      -> Es funktioniert bei mir wenn ich Edge als Browser nehme. Chrome auf Windows und auf iOS und auch Safari gehen nicht.
      Ich vermute also ich habe noch irgendwo ein Config Fehler, bin für jeden Tipp dankbar.

      Grüße Thomas

      Kommentar


        #4
        Ok, das Problem ist das Basic Auth, wenn ich das deaktiviere funktioniert es.
        Warum das so ist, schau ich mir morgen an.

        Kommentar


          #5
          Wenn du nochmal deine Apache-Konfig beschreibst, kann ich gerne noch mal drüber sehen. Nginx kann ich nur leider nicht aushelfen... damit hab ich mich nie beschäftigt.
          Denn normal funktioniert das mit dem Basic Auth überall.
          Bist du sicher auch den Nginx beended zu haben, wenn du das auf Apache umgebaut hast?

          Du kannst ja mal für dich prüfen, was hier als Ausgabe raus kommt
          Code:
          netstat -napt|grep apache
          Gruß

          Kommentar


            #6
            Hallo Thomas,
            danke für deine Unterstützung. Eventuell übersehe ich etwas ganz einfaches :-)

            Im Debug log kann ich nichts finden. Dort habe ich immer ein
            Code:
            AH01626: authorization result of Require valid-user : granted,
            Aber das wird für das "normale" http ohne upgrade sein nehme ich an.

            Laut forensic log ist der Request der selbe egal ob mit oder ohne Auth für den Proxy.

            Chrome Dev Debug sagt der connect finden jeweils zu der richtigen Adresse wss://meine.domain.de statt. Bei eingeschaltetem Auth kommt es aber gar nicht erst zu einem Handshake. Ich bekomme irgendwann einen Timeout.

            vHost Config:
            Code:
            <VirtualHost 192.168.0.245:443>
                    ServerName smarthome.meinedomain.de
            
                    DocumentRoot /var/www/html
                    
                    ErrorLog /var/log/apache2/smarthome.error.log
                    ForensicLog /var/log/apache2/smarthome.forensic.log
                    LogLevel debug
                    CustomLog /var/log/apache2/smarthome.access.log combined
            
                    ServerSignature On
                    SSLEngine on
                    SSLCertificateFile /etc/letsencrypt/live/home.meinedomain.de/fullchain.pem
                    SSLCertificateKeyFile /etc/letsencrypt/live/home.meinedomain.de/privkey.pem
                    SetEnv nokeepalive ssl-unclean-shutdown
            
                    Include /etc/apache2/smartvisu.conf
            </VirtualHost>
            Smartvisu.conf

            Code:
            <IfModule mod_rewrite.c>
               RewriteEngine on
            
               RewriteCond %{REQUEST_URI} ^/smarthome$ [NC,OR]
               RewriteCond %{REQUEST_URI} ^/smarthome/$ [NC]
               RewriteRule .* /smarthome/index.php [R=302,L]
            
               <IfModule mod_proxy.c>
            
                  ProxyPreserveHost On
                  ProxyVia On
            
                  RewriteCond %{QUERY_STRING} transport=polling [NC]
                  RewriteRule /(.*) http://localhost:2424/$1 [P]
            
                  RewriteCond %{HTTP:Upgrade} websocket [NC]
                  RewriteRule /(.*) ws://localhost:2424/$1 [P]
            
               </IfModule>
            
            </IfModule>
            
            <Location />
               AuthName "Private"
               AuthType Basic
               AuthUserFile /etc/apache2/htpasswd.smarthome
               Require valid-user
            </Location>

            Wenn ich das Basic Auth nur für die
            Code:
            <Location /smarthome>
            mache. Dann funktioniert es besten.

            Wenn ich den Proxy Bereich manuell schütze geht es auch nicht
            Code:
            <Proxy *>
                  AuthType Basic
                  AuthName "Passwortgeschützter Bereich"
                  AuthUserFile /etc/apache2/htpasswd.smarthome
                  require valid-user
                  </Proxy>

            Es schaut mir so aus als würde Chrome user&password für den upgrade stream nicht übermitteln. Mit MS Edge da geht es auch bei eingeschaltenem Auth.

            Grüße
            Thomas

            Kommentar


              #7
              Während ich so getippt habe..habe ich mal noch ein paar Sachen ausprobiert
              - Mein installierter Chrome Version 77.0.3865.75 - geht nicht
              - Neuer Chrome Portable Version 77.0.3865.90 - geht
              - Chrome auf iOS - geht nicht
              - Chrome auf Android - geht

              Scheint also ein Browser Bug zu sein. Mit Welchen Browser nutzt du es?

              Kommentar


                #8
                Also ich benutze Firefox auf Android/Linux/Windows genau so wie Chrome auf den drei Plattformen ohne Probleme.

                In der Visu hast du auch das ganze wie folgt eingestellt?

                Screenshot_20191001_233055.png

                Siehst du ob was in sh.ng rein kommt? Wenn du das Admin bzw. backend Plugin drauf hast, findest du dort unter Plugins einen Link zu dem visu_websocket plugin. Dort unter den Clients sollte localhost gelistet sein.

                Du kannst glaube nicht das ws allein schützen. Ein Auth muss vorher auf der Visu stattgefunden haben, damit er das dann dem ws mit übergibt.

                Ausserdem hab ich dir mal meine Daten von der ws Anfrage mitgeliefert, evtl. kannst du das damit besser vergleichen. Wie du dort sehen kannst, wird das Authorisation: Basic mit übergeben. Ist die Anfrage Adresse auch über https für den websocket Aufruf?

                Screenshot_20191001_233903.jpg

                Ansonnsten...:
                https://stackoverflow.com/questions/...for-websockets
                https://stackoverflow.com/questions/...me-without-ssl

                Hoffe mit den Tipps kommst du weiter
                Zuletzt geändert von TCr82; 01.10.2019, 23:15.

                Kommentar


                  #9
                  Hallo Thomas,

                  danke, passt soweit. Danke für deine Unterstützung.
                  Ich hatte nicht mehr so auf dem Schirm, dass Chrome auf iOS ja auch WebKit und nicht Chromium verwendet. Deshalb funktioniert das Basic Auth auch mit Chrome auf iOS nicht.

                  Grüße Thomas

                  Kommentar


                    #10
                    Ich habe den reverse proxy mit letsencrypt Zertifikaten auf iOS über ein Skript hinbekommen. Vielleicht hilft das hier inklusive entsprechender Zusatzfiles?
                    https://github.com/smarthomeNG/ansib...n/04_nginx.yml

                    Kommentar


                      #11
                      Im Image hab ich einen Header für Basic Authentication in der nginx https Config. Die Zeilen müssen raus. Dann klappt die Verbindung, allerdings die Graphen für die Ressourcen bräuchten wss, was ich noch nicht gelöst habe.
                      Zuletzt geändert von Onkelandy; 04.05.2020, 20:09.

                      Kommentar


                        #12
                        Hallo zusammen!
                        Ich bräuchte bitte eure Hilfe. Ich habe vor ein paar Monaten mit einem Pi 3+ den nginx reverse-Proxy und auf einem zweiten Pi 3+ smarthomeng erfolgreich zum laufen gebracht. Aufgrund diverser Hardware Änderungen würde ich das ganze jetzt gerne auf einen Pi zusammenlegen. Mein Gedanke dazu wäre gewesen, die Weiterleitungen von Proxy Pi einfach an sich selbst zu leiten. Die Visu wird zwar angezeigt, nur die Web-Socket Verbindung funktioniert nicht.

                        Hier mal meine https.conf

                        server {
                        server_tokens off;

                        ## Blocken, wenn Zugriff aus einem nicht erlaubten Land erfolgt ##
                        if ($allowed_country = no) {
                        return 403;
                        }

                        # https://www.cyberciti.biz/tips/linux...-security.html
                        ## Block download agents ##
                        if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
                        return 403;
                        }

                        ## Block some robots ##
                        if ($http_user_agent ~* msnbot|scrapbot) {
                        return 403;
                        }

                        ## Deny certain Referers ##
                        if ( $http_referer ~* (babes|forsale|girl|jewelry|love|nudit|organic|pok er|porn|sex|teen) )
                        {
                        return 403;
                        }

                        listen 443 ssl default_server;
                        server_name glocker.ddnss.de;

                        ##
                        # SSL
                        ##

                        ## Activate SSL, setze SERVER Zertifikat Informationen ##
                        # Generiert via Let's Encrypt!
                        ssl on;
                        ssl_certificate /etc/letsencrypt/live/xxx.ddnss.de/fullchain.pem;
                        ssl_certificate_key /etc/letsencrypt/live/xxx.ddnss.de/privkey.pem;
                        ssl_session_cache builtin:1000 shared:SSL:10m;
                        ssl_prefer_server_ciphers on;
                        # unsichere SSL Ciphers deaktivieren!
                        # ssl_ciphers HIGH:!aNULL:!eNULL:!LOW:!3DES:!MD5:!RC4;
                        ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512HE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384HE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
                        ssl_ecdh_curve secp384r1;
                        ssl_protocols TLSv1.2;
                        ssl_session_timeout 60m;
                        ssl_session_tickets on;
                        ssl_session_ticket_key /etc/nginx/nginx_ticketkey;
                        #ssl_buffer_size 16k; #for throughput, video applications
                        ssl_buffer_size 4k; #for quick first byte delivery

                        # Client Zertifikat spezifisch
                        ssl_client_certificate /etc/ssl/ca/certs/ca.crt;
                        ssl_crl /etc/ssl/ca/private/ca.crl;
                        ssl_verify_client optional;
                        ssl_dhparam /etc/ssl/ca/dh.pem;

                        # OCSP Stapling ---
                        # fetch OCSP records from URL in ssl_certificate and cache them
                        ssl_stapling on;
                        ssl_stapling_verify on;
                        resolver 8.8.8.8 8.8.4.4 valid=300s;
                        resolver_timeout 5s;

                        client_body_buffer_size 8K;
                        client_max_body_size 20m;
                        client_body_timeout 10s;
                        client_header_buffer_size 1k;
                        large_client_header_buffers 2 16k;
                        client_header_timeout 5s;

                        ##
                        # HSTS
                        ##

                        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

                        ##
                        # global
                        ##

                        root /var/www/html;
                        index index.php index.htm index.html;

                        # Add index.php to the list if you are using PHP
                        index index.html index.htm index.php;

                        # Proxy Caching
                        # Skip^1 caching variable init
                        set $nocache 0;
                        # Bypass^2 caching variable init
                        set $purgecache 0;

                        # Bypass^2 cache on no-cache (et al.) browser request
                        if ($http_cache_control ~ "max-age=0")
                        { set $purgecache 1; }
                        if ($http_cache_control ~ "no-cache")
                        { set $purgecache 1; }
                        # Bypass^2 cache with custom header set on request
                        if ($http_x_cache_purge ~* "true")
                        { set $purgecache 1; }

                        location ~* favicon|apple-touch-icon|android-chrome-|mstile-|safari-pinned-tab.svg|browserconfig.xml|manifest.json|apple-icon|ms-icon|android-icon|mstile {
                        try_files $uri @favicons;
                        }

                        location @favicons {
                        rewrite ^/(.+)$ /favicons/$1 last;
                        }


                        # Weiterleitung zu SmartHomeNG (Websocket Schnittstelle) mit Basic Auth
                        # Nur Verbindungen gegen "/" durchlassen! Also weder auf Dateien noch Verzeichnisse (= nur Websocket Connects)
                        location = / {
                        auth_basic "Restricted Area: smartVISU";
                        auth_basic_user_file /etc/nginx/.smartvisu;
                        # access_by_lua_file /etc/nginx/scripts/hass_access.lua;
                        proxy_pass http://192.168.178.10:2424;
                        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;

                        }

                        # Zugriff auf die smartVISU mit Basic Auth
                        location /smartvisu {
                        auth_basic "Restricted Area: smartVISU";
                        auth_basic_user_file /etc/nginx/.smartvisu;
                        # access_by_lua_file /etc/nginx/scripts/hass_access.lua;
                        proxy_pass http://192.168.178.10:80/smartvisu;
                        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;
                        }

                        # Alexa Plugin Weiterleitung
                        location /alexa {
                        auth_basic "Restricted Area: Alexa";
                        auth_basic_user_file /etc/nginx/.alexa;
                        # access_by_lua_file /etc/nginx/scripts/hass_access.lua;
                        proxy_pass http://192.168.178.10:9000/;
                        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;
                        }

                        # Network Plugin Weiterleitung
                        location /admin {
                        auth_basic "Restricted Area: SmartHomeNG";
                        auth_basic_user_file /etc/nginx/.shng;
                        # access_by_lua_file /etc/nginx/scripts/hass_access.lua;
                        proxy_pass http://192.168.178.10:8383/admin;
                        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;
                        }



                        }
                        Nginx Proxy Server hatte die Ip 192.168.168.11
                        Der Smarthomeng Pi hatte die Ip:192.168.178.10

                        Unter Sites available habe ich folgende default datei



                        upstream websocket {
                        server 192.168.178.10:2424;
                        }

                        upstream mainhost {
                        server 192.168.178.10;
                        keepalive 20;
                        }

                        upstream sv {
                        server 192.168.178.10;
                        keepalive 20;
                        }

                        upstream alexa {
                        server 192.168.178.10:9000;
                        }

                        upstream shng {
                        server 192.168.178.10:8383;
                        }

                        upstream nodered {
                        server 192.168.178.10:1880;
                        }

                        upstream shnet {
                        server 192.168.178.10:8888;
                        }

                        upstream monithost {
                        server 192.168.178.10:2812;
                        }

                        upstream grafanahost {
                        server 191.168.178.10:3000;
                        }
                        upstream scanner {
                        server 191.168.178.11:80;
                        }


                        server {

                        listen 80 default_server;
                        listen [::]:80 default_server;
                        include /etc/nginx/snippets/letsencrypt.conf;
                        root /var/www/html;

                        # Auf HTTPS umleiten
                        if ($http_x_forwarded_proto = "http") {
                        return 301 https://$server_name$request_uri;
                        }

                        ## Blocken, wenn Zugriff aus einem nicht erlaubten Land erfolgt ##
                        if ($allowed_country = no) {
                        return 403;
                        }

                        # https://www.cyberciti.biz/tips/linux...-security.html
                        ## Block download agents ##
                        if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
                        return 403;
                        }

                        ## Block some robots ##
                        if ($http_user_agent ~* msnbot|scrapbot) {
                        return 403;
                        }

                        ## Deny certain Referers ##
                        if ( $http_referer ~* (babes|forsale|girl|jewelry|love|nudit|organic|pok er|porn|sex|teen) )
                        {
                        return 403;
                        }

                        access_log /var/log/nginx/access.log specialLog;
                        error_log /var/log/nginx/error.log;

                        # Add index.php to the list if you are using PHP
                        index index.html index.htm index.nginx-debian.html index.php;

                        server_name xxx.ddnss.de;

                        # Skip^1 caching variable init
                        set $nocache 0;
                        # Bypass^2 caching variable init
                        set $purgecache 0;

                        # Bypass^2 cache on no-cache (et al.) browser request
                        if ($http_cache_control ~ "max-age=0")
                        { set $purgecache 1; }
                        if ($http_cache_control ~ "no-cache")
                        { set $purgecache 1; }
                        # Bypass^2 cache with custom header set on request
                        if ($http_x_cache_purge ~* "true")
                        { set $purgecache 1; }

                        location / {
                        # First attempt to serve request as file, then
                        # as directory, then fall back to displaying a 404.
                        try_files $uri $uri/ =404;
                        if ($http_upgrade = websocket) {
                        proxy_pass http://websocket;
                        }
                        }

                        # pass PHP scripts to FastCGI server

                        location ~ \.php$ {
                        try_files $uri =404;
                        fastcgi_split_path_info ^(.+\.php)(/.+)$;
                        fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
                        fastcgi_index index.php;
                        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                        include fastcgi_params;

                        }

                        location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
                        include /etc/nginx/headers.conf;
                        expires 7d;
                        add_header Cache-Control "public, no-transform";
                        }

                        location ~* favicon|apple-touch-icon|android-chrome-|mstile-|safari-pinned-tab.svg|browserconfig.xml|manifest.json|apple-icon|ms-icon|android-icon|mstile {
                        try_files $uri @favicons;
                        }

                        location @favicons {
                        rewrite ^/(.+)$ /favicons/$1 last;
                        }

                        location /visu_websocket/ {
                        include /etc/nginx/headers.conf;
                        satisfy any;
                        #auth_basic "Restricted Area: Smarthome NG Backend";
                        #auth_basic_user_file /etc/nginx/.shng;
                        allow 127.0.0.1;
                        allow 192.168.0.0/16;
                        allow 10.0.0.0/16;
                        allow ::1;
                        deny all;

                        proxy_ignore_client_abort on;
                        proxy_pass http://$host:8383;

                        location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
                        include /etc/nginx/headers.conf;
                        expires 7d;
                        add_header Cache-Control "public, no-transform";
                        proxy_pass http://$host:8383;
                        }

                        }

                        location /api/ {
                        include /etc/nginx/headers.conf;
                        satisfy any;
                        #auth_basic "Restricted Area: Smarthome NG Backend";
                        #auth_basic_user_file /etc/nginx/.shng;
                        allow 127.0.0.1;
                        allow 192.168.0.0/16;
                        allow 10.0.0.0/16;
                        allow ::1;
                        deny all;

                        proxy_ignore_client_abort on;
                        proxy_pass http://$host:8383;

                        location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
                        include /etc/nginx/headers.conf;
                        expires 7d;
                        add_header Cache-Control "public, no-transform";
                        proxy_pass http://$host:8383;
                        }

                        }

                        location /admin/ {
                        include /etc/nginx/headers.conf;
                        satisfy any;
                        #auth_basic "Restricted Area: Smarthome NG Backend";
                        #auth_basic_user_file /etc/nginx/.shng;
                        allow 127.0.0.1;
                        allow 192.168.0.0/16;
                        allow 10.0.0.0/16;
                        allow ::1;
                        deny all;

                        proxy_pass http://$host:8383;

                        location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
                        include /etc/nginx/headers.conf;
                        expires 7d;
                        add_header Cache-Control "public, no-transform";
                        proxy_pass http://$host:8383;
                        }

                        }

                        location /backend/ {
                        include /etc/nginx/headers.conf;
                        satisfy any;
                        #auth_basic "Restricted Area: Smarthome NG Backend";
                        #auth_basic_user_file /etc/nginx/.shng;
                        allow 127.0.0.1;
                        allow 192.168.0.0/16;
                        allow 10.0.0.0/16;
                        allow ::1;
                        deny all;

                        proxy_pass http://$host:8383;

                        location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
                        include /etc/nginx/headers.conf;
                        expires 7d;
                        add_header Cache-Control "public, no-transform";
                        proxy_pass http://$host:8383;
                        }

                        }

                        location /gstatic/ {
                        include /etc/nginx/headers.conf;
                        satisfy any;
                        #auth_basic "Restricted Area: Smarthome NG Backend";
                        #auth_basic_user_file /etc/nginx/.shng;
                        allow 127.0.0.1;
                        allow 192.168.0.0/16;
                        allow 10.0.0.0/16;
                        allow ::1;
                        deny all;
                        proxy_pass http://$host:8383;

                        location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
                        include /etc/nginx/headers.conf;
                        expires 7d;
                        add_header Cache-Control "public, no-transform";
                        proxy_pass http://$host:8383;
                        }

                        }

                        # Network Plugin Weiterleitung
                        location /shnet/ {
                        include /etc/nginx/headers.conf;
                        satisfy any;
                        #auth_basic "Restricted Area: Smarthome NG Network";
                        #auth_basic_user_file /etc/nginx/.shng;
                        allow 127.0.0.1;
                        allow 192.168.0.0/16;
                        allow 10.0.0.0/16;
                        allow ::1;
                        deny all;

                        proxy_pass http://shnet;
                        rewrite ^/shnet/(.*) /$1 break;
                        }

                        # Nodered Weiterleitung
                        location /nodered/ {
                        include /etc/nginx/headers.conf;
                        satisfy any;
                        #auth_basic "Restricted Area: Smarthome NG Network";
                        #auth_basic_user_file /etc/nginx/.shng;
                        allow 127.0.0.1;
                        allow 192.168.0.0/16;
                        allow 10.0.0.0/16;
                        allow ::1;
                        deny all;

                        proxy_pass http://nodered;
                        #rewrite ^/nodered/(.*) /$1 break;
                        location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
                        include /etc/nginx/headers.conf;
                        expires 7d;
                        add_header Cache-Control "public, no-transform";
                        proxy_pass http://nodered;
                        }
                        }

                        # Weiterleitung zu Grafana
                        location /grafana/ {
                        satisfy any;
                        allow 127.0.0.1;
                        allow 10.0.0.0/8;
                        allow 192.168.0.0/16;
                        # auth_basic "Restricted Area: Monit";
                        # auth_basic_user_file /etc/nginx/.monit;
                        allow ::1;
                        deny all;

                        proxy_pass http://grafanahost/;
                        include /etc/nginx/headers.conf;
                        location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
                        rewrite ^/grafana/(.*) /$1 break;
                        include /etc/nginx/headers.conf;
                        expires 7d;
                        add_header Cache-Control "public, no-transform";
                        proxy_pass http://grafanahost;
                        }
                        }

                        # Weiterleitung zu Monit
                        location /monit/ {
                        satisfy any;
                        allow 127.0.0.1;
                        allow 10.0.0.0/8;
                        allow 192.168.0.0/16;
                        allow ::1;
                        #auth_basic "Restricted Area: Monit";
                        #auth_basic_user_file /etc/nginx/.monit;
                        deny all;

                        proxy_ignore_client_abort on;
                        rewrite ^/monit/(.*) /$1 break;
                        proxy_pass http://monithost;
                        include /etc/nginx/headers.conf;

                        location ~* favicon.ico {
                        alias /var/www/html/favicon/monit/favicon.ico;
                        }
                        }

                        location /phpmyadmin {
                        root /usr/share/;
                        index index.php index.html index.htm;

                        location ~ ^/phpmyadmin/(.+\.php)$ {
                        alias /usr/share/phpmyadmin/$1;

                        fastcgi_pass unix:/run/php/php7.3-fpm.sock;

                        fastcgi_index index.php;
                        fastcgi_param SCRIPT_FILENAME $request_filename;

                        # From fastcgi_params
                        fastcgi_param QUERY_STRING $query_string;
                        fastcgi_param REQUEST_METHOD $request_method;
                        fastcgi_param CONTENT_TYPE $content_type;
                        fastcgi_param CONTENT_LENGTH $content_length;
                        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
                        fastcgi_param REQUEST_URI $request_uri;
                        fastcgi_param DOCUMENT_URI $document_uri;
                        fastcgi_param DOCUMENT_ROOT /usr/share/phpmyadmin; # <-- Changed
                        fastcgi_param SERVER_PROTOCOL $server_protocol;
                        fastcgi_param GATEWAY_INTERFACE CGI/1.1;
                        fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
                        fastcgi_param REMOTE_ADDR $remote_addr;
                        fastcgi_param REMOTE_PORT $remote_port;
                        fastcgi_param SERVER_ADDR $server_addr;
                        fastcgi_param SERVER_PORT $server_port;
                        fastcgi_param SERVER_NAME $server_name;
                        fastcgi_param REDIRECT_STATUS 200;

                        fastcgi_intercept_errors on;
                        fastcgi_buffers 8 16k;
                        fastcgi_buffer_size 32k;
                        fastcgi_connect_timeout 900;
                        fastcgi_send_timeout 900;
                        fastcgi_read_timeout 900;
                        }

                        location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                        root /usr/share/;
                        }
                        }

                        # Dealing with the uppercased letters
                        location /phpMyAdmin {
                        rewrite ^/* /phpmyadmin last;
                        }



                        }
                        Wenn ich mir das jetzt so ansehe, glaube ich, das das dazumals vielleicht ja auch nur mit Glück funktioniert hat, da in den beiden Datein, ja immer andere weiterleitungen angegeben sind. Ich Blick da einfach nicht durch. Könnte mir da bitte jemand weiterhelfen, wie ich die config ändern muss, damit alles auf einem Pi läuft?
                        Habe das aktuelle Image von OnkelAndy 1.8.2 drauf. Let´s encrypt und auth_basic dürfte ja funktionieren, weil beim aufruf der Seite muß ich Benutzername und pw angeben, damit ich die Visu sehe

                        Danke schonmal im vorhinein

                        Kommentar


                          #13
                          Kleines update. Wenn man die config ändert, hilft es nichts, nur
                          Code:
                          sudo service nginx restart
                          einzugeben. Man muß die config auch neu laden
                          Code:
                          /etc/init.d/nginx reload
                          Das habe ich vergessen.
                          Zugriff von außen auf die Visu funktioniert jetzt auch ohne den Websocket error.

                          Allerdings habe ich noch ein Problem mit dem admin interface. Wenn ich extern im Browser meine Adresse eingebe https://<mydomian>/admin verlangt der Proxy den Benutzername und das Passwort. Gebe ich das ein, komme ich auf eine Anmeldeseite von smarthomeNG wo ich ebenfalls Benutzername und PW eingeben muss. Diese Seite sieht allerdings anders aus, als wenn ich sie lokal aufrufe.
                          admin_ex.PNG
                          Klicke ich dann auf LOGIN.SIGN_IN passiert allerdings nichts. Lokal funktioniert es aber.
                          admin_lokal.PNG
                          Ich gehe daher davon aus, dass dies auch der Grund ist, warum das Alexa-plugin noch nicht funktioniert.
                          Anbei ein Ausschnitt des geänderte code der conf.d/https.conf

                          Code:
                          location = / {
                          auth_basic "Restricted Area: smartVISU";
                          auth_basic_user_file /etc/nginx/.smartvisu;
                          # access_by_lua_file /etc/nginx/scripts/hass_access.lua;
                          proxy_pass http://192.168.178.11:2424;
                          # 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;
                          
                          }
                          
                          # Zugriff auf die smartVISU mit Basic Auth
                          location /smartvisu {
                          auth_basic "Restricted Area: smartVISU";
                          auth_basic_user_file /etc/nginx/.smartvisu;
                          # access_by_lua_file /etc/nginx/scripts/hass_access.lua;
                          proxy_pass http://192.168.178.11:80/smartvisu;
                          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;
                          }
                          
                          # Alexa Plugin Weiterleitung
                          location /alexa {
                          auth_basic "Restricted Area: Alexa";
                          auth_basic_user_file /etc/nginx/.alexa;
                          # access_by_lua_file /etc/nginx/scripts/hass_access.lua;
                          proxy_pass http://192.168.178.11:9000/;
                          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;
                          }
                          
                          # Network Plugin Weiterleitung
                          location /admin {
                          auth_basic "Restricted Area: SmartHomeNG";
                          auth_basic_user_file /etc/nginx/.shng;
                          # access_by_lua_file /etc/nginx/scripts/hass_access.lua;
                          proxy_pass http://192.168.178.11:8383/admin;
                          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;
                          }
                          Woran könnte das liegen?
                          Angehängte Dateien

                          Kommentar


                            #14
                            Hm, also bei systemctl restart nginx wird auch die Config neu geladen.
                            Aber in dem Fall funktioniert es prinzipiell, ja? In der SV hast du in der Config eh "reverse proxy" aktiviert?

                            Wegen Alexa kann ich leider nicht wirklich helfen, aber wenn es da in der Config eine Änderung braucht, bitte gerne hier mitteilen, damit ich's ins Image nehmen kann. Ansonsten gabs zu dem Thema glaub schon die eine oder andere Diskussion hier im Forum.

                            Die Admin Interface Sache, dass offenbar das lang File nicht geladen wird, ist mir auch schon öfters untergekommen, auch wenn sonst alles funktioniert. Dass nichts passiert beim Klick ist natürlich doof Schon mal probiert, direkt eine Unterseite wie system oder plugins aufzurufen? Leider gibt es da generell das Problem, dass "Unterseiten" nicht über das Menü funktionieren. Hab immer noch keine Lösung dafür

                            Kommentar


                              #15
                              Hallo OnkelAndy

                              Ja, reverse proxy ist in der SV aktiviert.

                              Zum Thema Alexa hab ich hier im Forum zu Jahresbeginn schon gefühlte 250 Seiten gelesen. Werde diese dann nochmals auf neue Einträge kontrollieren.
                              Ich dachte nur, weil das Admin Interface auch nicht funkt, das in meiner config noch irgendwo ein Fehler begraben ist und daher das Alexa-plugin auch nicht geht.

                              Das heißt, das language File wurde nicht geladen, darum englisch. Einloggen tut sich nichts. Beim versuch, eine Unterseite aufzurufen komme ich wieder zur Anmeldeseite.

                              https://xxx.ddnss.de/admin/login?ret...2Fplugins_list

                              Visu bei deinem image ist Version 3.01, habe aber gerade gesehen, es gibt aucgh eine 3.10.
                              Soll ich da mal updaten?

                              Kommentar

                              Lädt...
                              X