patrickgoll : gibt es von dir eine Erfolgsmeldung? Läuft das so?
Ankündigung
Einklappen
Keine Ankündigung bisher.
Reverse Proxy
Einklappen
X
-
Danke kaiwerner!
Die Anleitung funktionier so. Die Schritte nochmals zusammengefasst:
- nginx mit PHP Support installieren
- eine vhost config anlegen wie von kaiwerner beschrieben mit dem wichtigen Teil "if ($http_upgrade = websocket ...."
- in der smartvisu den config_driver_port auf 443 ändern
- wenn nicht der develop branch verwendet wird dann in io_smarthome.py.js und io_smarthome.py.min.js "ws://" durch "wss://" ersetzten
Und schon hat man nur noch von localhost Verbindungen auf Port 2424
netstat -a | grep 2424
tcp 0 0 *:2424 *:* LISTEN
tcp 0 0 localhost:2424 localhost:53796 VERBUNDEN
tcp 0 0 localhost:53796 localhost:2424 VERBUNDEN
Kommentar
-
Zitat von malte Beitrag anzeigenFunktioniert tatsächlich! Sehr cool!
Probleme habe ich "nur" bei iOS. Egal welcher Browser, die Verbindung zum SmarthomeNG wird offensichtlich nicht aufgebaut: die Visu hat keine Funktion und der Auto Re-Connect springt an.
Klappt das Konstrukt bei jemanden von euch auch auf iOS?
Ich nutze aktuell eine uralte aus Debian stable und werde heute Abend mal updaten.
http://forum.directadmin.com/showthread.php?t=53570
Kommentar
-
Hallo,
habe das Beispiel nun bei mir auch integriert, wobei bei mir die SV auf eine Maschine hinter den ReverseProxy läuft. Geht einwandfrei - mind. auf Android.
smai irgendwie zeigt die SV2.9 in der Admin nicht an, dass ich Port 443 als Websocket Port konfiguriert habe, obwohl im INI File der Richtige steht, steht in der GUI 2424?!
Kommentar
-
Mal eine dumme Frage: Port 443 ist gemäß der hier diskutierten Lösung dann doch für jegliche Websocketverbindung offen im Netz via Port 443 erreichbar, richtig?
Das ist natürlich etwas unschön...
PS: ok sehe gerade, dass Clientzertifikate genutzt werden.. Dann muss ich das wohl auch noch einrichten.
PPS: Nach Installation eines Clientzertifikats geht nun auch alles. habe es sogar hinbekommen, dass bestimmte Pfade nur via Basic Auth, andere via Clientzertifikat gesichert sind.Zuletzt geändert von psilo; 02.07.2017, 10:34.
- Likes 1
Kommentar
-
Zitat von psilo Beitrag anzeigenNach Installation eines Clientzertifikats geht nun auch alles. habe es sogar hinbekommen, dass bestimmte Pfade nur via Basic Auth, andere via Clientzertifikat gesichert sind.
Würde es dann in der Apple Welt nutzen.
Gruss Andreas
Kommentar
-
Vielleicht hier die Variante, die ich verwende, um die Clientzertifikate nur auf / (für die Websocket-Connection bzw auf /smartVISU einzusetzen, und auf allem anderen nicht. Im Beispiel das Network Plugin von SHNG (für EgiGeoZone) ohne Clientzertifikate nur mit Basic Auth.
Auf iOS habe ichs aber noch nicht getestet, da wo ich die Lösung her hatte stand, dass Safari hier wohl manchmal Probleme macht:
Code:ssl_verify_client optional; ssl_session_timeout 5m; [...] location / { if ($ssl_client_verify != SUCCESS) { return 403; break; } if ($http_upgrade = websocket) { proxy_pass http://192.168.178.100:2424; } if ($http_upgrade != websocket) { return 403; } } location /smartVISU { if ($ssl_client_verify != SUCCESS) { return 403; break; } if ($allowed_country = no) { return 403; } proxy_pass https://192.168.178.100/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; } location /shng { auth_basic "Restricted Area: SmartHomeNG"; auth_basic_user_file /etc/nginx/.shng; if ($allowed_country = no) { return 403; } proxy_pass http://192.168.178.100:8888/; 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; }
Zuletzt geändert von psilo; 04.07.2017, 15:21.
- Likes 1
Kommentar
-
Hallo Miteinander!
Ich stehe auch gerade vor dem Problem, dass die Visu hinter meinem Reverse-Proxy zwar erreichbar ist, aber im Offline-Modus.
Meine nginx Konfiguration sieht im Moment so aus: (nginx war nötig, um das Alexa Plugin zu nutzen)
Code:upstream php { server localhost:9090; } server { listen 80 default_server; server_name xyz.spdns.eu; satisfy any; allow 192.168.1.0/24; deny all; auth_basic "SmartVisu Anmeldung"; auth_basic_user_file /etc/nginx/htpasswd.smartvisu; root /var/www/html; index index.php index.html index.htm; location / { autoindex on; } location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9090; fastcgi_read_timeout 300; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location /.well-known { allow all; } } # Alexa server { listen 443 ssl default_server; server_name xyz.spdns.eu; access_log /var/log/nginx/alexa.log combined; auth_basic "Alexa"; auth_basic_user_file /etc/nginx/htpasswd.alexa; include /etc/nginx/include.d/common; location / { proxy_pass http://192.168.1.13: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; } }
Kann mir hier jemand dabei helfen?
Gruß, Max
Kommentar
-
wo ist die weiterleitungsregel für deine websocket verbindung?
im anderen thread habe ich mein beispiel gepostet.
das sind übrigens meine websocket anteile:
Code:location / { [COLOR=#FF0000] if ($ssl_client_verify != SUCCESS) { return 403; break; }[/COLOR] if ($http_upgrade = websocket) { proxy_pass http://192.168.178.100:2424; } if ($http_upgrade != websocket) { return 403; } }
die websockets gehen nicht auf einen kontextpfad, daher musst du sie auf "/" durchrouten. ob man einen pfad in der SV konfig mit angeben kann, habe ich nicht probiert.
in der config.ini muss deine dyndns domain rein und der ssl port:
Code:driver_address = "xxx.dyndns.de" driver_port = "443"
PS: NGINX auf einer eigenen Hardware vor SmartVisu und SHNG ist eine super Sache. Du solltest aber wirklich verstehen, was Deine Regeln machen. Fang ab besten bei Null an und kopiere nicht blind Beispiele rein. Sonst hast du am Ende eine vollkommen unsichere Konfiguration.. Man kann auch viel falsch machen.
Ich kann auch schwer empfehlen, sich in das Thema Security in diesem Kontext etwas einzulesen.
Und wenn das alles zu hoch ist: Alexa via NGINX und Basic Auth. SmartVISU nur im VPN... dann ist alles easy und Du kannst lokale IPs nehmen und NGINX wird übersprungen, wenn Du es richtig machst..Zuletzt geändert von psilo; 25.09.2017, 17:06.
Kommentar
Kommentar