Ankündigung

Einklappen
Keine Ankündigung bisher.

Reverse Proxy

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

    Reverse Proxy

    Abend zusammen,

    betreibt jemand erfolgreich smartVISU über einen ReverseProxy und kann mir sagen wir ich die WebSockets konfigurieren muss?

    Danke
    Thomas

    #2
    Ob SV hinter einem ReverseProxy ist, müsste für die Websockets doch egal sein, so lange diese DIREKT via der IP des Servers auf dem eingestellten Port (Default müsste wie bei mir 2424 sein) connecten können?

    Kommentar


      #3
      Das stimmt nicht. Ist offensichtlich nicht egal. Hab das auch versucht und es geht definitiv nicht. Warum kann ich allerdings nicht sagen.

      Code:
      VM278:35 WebSocket connection to 'wss://192.168.1.10:2424/' failed: Error in connection establishment: net::ERR_CONNECTION_TIMED_OUT
      Das spuckt hierbei der Chrome im Debug Modus aus.

      Kommentar


        #4
        Wenn nur die SV hinter dem Reverse proxy ist, dürfte psilo recht haben. Es ist aber anzunehmen, dass auch SHNG hinter den Proxy sein soll, sonst bringt dieser ja nix.
        Und dabei muss der Reverse Proxy wohl entsprechend konfiguriert sein, damit er Websockets handeln kann. Details weiss ich aber leider auch nicht bzw. hängen vom Produkt ab.
        patrickgoll wieso schändest du eigentlich diese Leiche hier?

        Kommentar


          #5
          Wollte hier nicht alte Wunden aufreisen aber ich habe zwischenzeitlich festgestellt, dass es tatsächlich daran liegt, dass mein verwendeter Reverse Proxy keine Websockets unterstützt. Also ist das per se nicht unmöglich denke ich.

          Kommentar


            #6
            Keine Wunden, im Gegenteil würde ich es sehr begrüssen, wenn jemand eine funktionierende Reverse Proxy Lösung präsentieren könnte. Dies wäre ein erster Schritt weg umständlichen VPN.

            Kommentar


              #7
              Hi,

              habe mal gelesen, dass Reverse proxy mit nginx auch bei Wegsocket gehen soll. Hatte auch die Idee. Habe es aber noch nicht umgesetzt.

              irgendwo aus dem Internet (https://www.nginx.com/blog/websocket-nginx/):

              NGINX supports WebSocket by allowing a tunnel to be set up between a client and a backend server. For NGINX to send the Upgrade request from the client to the backend server, the Upgrade and Connection headers must be set explicitly, as in this example:

              Code:
              location /wsapp/ {
              proxy_pass http://wsbackend;
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection "upgrade";
              }
              Vielleicht gibt das eine Idee zur Realisierung. Gruss Andreas

              Kommentar


                #8
                Ja geht. Mache ich so.

                Kommentar


                  #9
                  Zitat von kaiwerner Beitrag anzeigen
                  Ja geht. Mache ich so.
                  teilst du mal deine config mit uns? Ich habe auch mit nginx keine funktionierende Lösung hinbekommen. Danke.

                  Kommentar


                    #10
                    Zitat von kaiwerner Beitrag anzeigen
                    Ja geht. Mache ich so.
                    Ja das würde mich auch interessieren. Wie sieht es aus mit der Config? Poste mal deinen NGINX teil bitte. Hab hier alles vorbereitet und kann direkt testen.
                    Zuletzt geändert von bmx; 18.05.2017, 17:16.

                    Kommentar


                      #11
                      Also ich habe jetzt mal diverse Kombinationen durchprobiert, bekomme das aber nicht zum laufen. Egal wie ich es eintrage, so habe ich stets Anzeigefehler in der Visualisierung. Icons und Bilder werden nicht mehr dargestellt und die Funktion bleibt auch aus. Nachfolgendes Beispiel ist sinnbildlich für das was ich versucht habe.

                      Code:
                           map $http_upgrade $connection_upgrade {        
                                 default upgrade;
                                  ''      close;    
                            }      
                      
                           server {         ...          
                      
                           location /smartVISU/ {            
                               proxy_pass http://backend;            
                               proxy_http_version 1.1;            
                               proxy_set_header Upgrade $http_upgrade;            
                               proxy_set_header Connection $connection_upgrade;        
                           }
                      für das http://backend habe ich verschiedene Einträge versucht: IP:2424, 127.0.0.1:2424, 127.0.0.1:80, 127.0.0.1 ohne Port usw. Keines davon funktioniert wirklich. Ich bin mir zwischenzeitlich nicht mehr sicher ob das wirklich geht. Auch wenn kaiwerner das gesagt hat.

                      Kommentar


                        #12
                        ../sites-enabled/smarthome
                        Code:
                        server {
                                listen 443 ssl;
                                server_name smarthome.home.***.de;
                        
                               ssl_certificate /etc/ssl/certs/smarthome@***.de.crt;
                               ssl_certificate_key /etc/ssl/private/smarthome_private_key.pem;
                               ssl_client_certificate /etc/ssl/ca/ca.crt;
                               ssl_verify_client on;
                        #       ssl_verify_client off;
                        
                               location / {
                                        root /var/www/html;
                                        index index.html index.php;
                                        autoindex on;
                                        if ($http_upgrade = websocket) {
                                                proxy_pass http://localhost:2424;
                                        }
                                }
                        
                                location ~ \.php$ {
                                        root /var/www/html;
                                        fastcgi_pass unix:/var/run/php5-fpm.sock;
                                        fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
                                        include fastcgi_params;
                                }
                        }
                        
                        server {
                                listen 80;
                                server_name smarthome.home.***.de;
                        #        return 301 https://$server_name$request_uri;
                        
                                location / {
                                        root /var/www/html;
                                        index index.html index.php;
                                        autoindex on;
                                        if ($http_upgrade = websocket) {
                                                proxy_pass http://localhost:2424;
                                        }
                                }
                                location ~ \.php$ {
                                       root /var/www/html;
                                        fastcgi_pass unix:/var/run/php5-fpm.sock;
                                        fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
                                        include fastcgi_params;
                                }
                        
                                location /baos {
                                        return 301 http://debiantest.home.***.de/baos;
                                }
                        
                        #       location ~ ^/post/(.*) {
                        #                rewrite ^ http://debiantest.home.***.de/post/$1;
                        #       }
                        
                        }
                        Ich hoffe das hilft.

                        [Edit]
                        Und in Smartvisu "ws://" durch "wss://" ersetzen und Port von 2424 auf 443 geändert.
                        Zuletzt geändert von kaiwerner; 23.05.2017, 15:35.

                        Kommentar


                          #13
                          Das geht bei mir irgendwie nicht. Der Fehler lautet: unknown directive "if ($http...." fehlt da noch was? Und wie meinst du das in deinem Edit? Kannst du ein Bild der Konfigseite posten?

                          Kommentar


                            #14
                            Also ich glaube, ich hatte noch php-fpm für Fastcgi der Smartvisu installiert und die Berechtigung in der nginx.conf und der /etc/php5/fpm/pool.d/www.conf von www-data auf admin umgebogen.
                            Das war aber glaube ich schon für nginx.

                            Konfigseite - Auszug aus der config.ini
                            Code:
                            ...
                            driver = "smarthome.py"
                            driver_address = "smarthome.home.***.de"
                            driver_autoreconnect = true
                            driver_port = "443"
                            driver_realtime = true
                            js = "min.js"
                            ...
                            und in visu/driver/io_smarthome.py.js aus dem develop Branch, da ist das umbiegen auf wss drin. https://github.com/Martin-Gleiss/sma...acbe03c9cb29bd

                            Kommentar


                              #15
                              Heiliges Kanonenrohr. Das ist aber ein Eingriff unter der Haube. Wahnsinn. Das probiere ich dann mal aus und lass euch wissen, ob das so funktioniert.

                              Kommentar

                              Lädt...
                              X