Upgrade 5.0 --> 5.1 Webfront Probleme mit Reverse Proxy

Schau mal hier: https://mlohr.com/websockets-for-synology-dsm/

Hallo Zusammen,

Ich habe das gleiche Problem mit dem Safari auf dem iPad und dem iPhone.
Mit dem Firefox unter Windows funktioniert die Anmeldung.

Ich nutze jetzt IP Symcon 5.1 vom 23.05.2019

Nutzt du denn einen Reverse Proxy? Denn in diesem Thema geht es genau darum.

paresy

Da ich nicht weiß was ein reverse Proxy ist … vermutlich eher nicht.

Hallo Uwe,

Soweit war ich dann auch schon aber das ist bei PfSense nicht so einfach wie beim Synology. Viele posts gehen auf den HAProxy ein und auf nginx. Was ich zu Squid gefunden habe ist alles auf ACLs bezogen und so weit bin ich mit Squid nicht vertraut, bin nur ein interessierter user und kein super nerd.
Hab jetzt auf https und NAT umgestellt. Brauch zum glück den port 443 nicht für anderes zeuchs…

Das ganze ist allerdings ein Problem beim vermarkten. So ein Schneider Nero (Fibaro) Home Hub da geb ich meine e-mail adresse an, mach einen account und das funktioniert. Halt überhaupt nicht mehr wenn das internet mal weg ist aber das kümmert ja erst mal keinen.

Gruß

Heinz

Hallo Heinz,

ich brauche auf jeden Fall einen Reverse Proxy, da ich mehrere Frontends von Extern bedienen möchte, natürlich als Heimanwender nur eine öffentliche IP habe, und von der Arbeit nur mit HTTP(S) über Port 80/443 raus komme.

Ich habe in den letzten Jahren schon mal öfters das Firewall Produkt gewechselt, da ich genau auf solche Probleme gestoßen bin.
Websockets war ein solches Thema. Eingebauter Letsencrypt Support z.B. ein anderes Thema…

Manchmal muss man zweigleisig fahren, bis eine benötigte Funktionalität in dem eingesetzten Firewall Produkt nachgepflegt wurde.
Der Reverse Proxy kann dann z.b. eine Sophos UTM mit HomeUse Lizenz machen, oder Du verwendest ein fertiges Docker Image von Squid, Apache,…

Wenn der Reverse Proxy in der pfSense keinen WebSocket Support hat, dann leite 443 auf einen anderen ReverseProxy z.B. auf einer virtuellen Maschine in Deinem internen Netzwerk weiter. Wenn pfSense dann soweit ist, kannst Du das wieder zurück bauen.

Schau Dir doch mal als Alternative die Sophos XG Firewall an. Da gibt es auch eine kostenlose HomeUse Lizenz und die hat WebSocket Support. Ich glaube das Bedienkonzept der Sophos XG ist ähnlich zu pfSense.

Sophos UTM ist ein anderes Firewallprodukt und kann auch Letsencrypt Zertifikate selbst verwalten.
Die kostenlose HomeLizenz hat aber leider eine etwas restriktive Begrenzung an internen IP Adressen.

Da kann es in einem gut gefüllten SmartHome eng werden, wenn die Sophos UTM als alleiniges Gateway LAN - Internet fungiert.

Hallo Uwe,

Ich schau mir Sophos mal an. Allerdings habe ich jetzt 4 sites + eine mobile SPS zusammen VPN’t, da will ich nicht unbedingt wechseln. Das sind wieder wochen arbeit bis der ganze scheiß funktioniert. Wenn wenigstens das Connect vernünftig gehen würde aber das ist auch nicht ganz ohne, da ging auch irgendwas nicht. Ich glaub die webcams.

Gruß

Heinz

Gibt es irgendwo einen step by step guide für den Reverse Proxy mit apache (am besten Ubuntu) oder nginx, unter Berücksichtigung der Websocket anpassen.

Ich habe in meine „sites-enabled“ config den Socket rewrite eingefügt:



<VirtualHost *:443>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        SSLProxyEngine on
        SSLEngine On
        # Set the path to SSL certificate
        # Usage: SSLCertificateFile /path/to/cert.pem
        ProxyPreserveHost On


        RewriteEngine On
        RewriteCond %{HTTP:Upgrade} =websocket [NC]
        RewriteRule /(.*)           ws://x.x.x.x:443/$1 [P,L]
        RewriteCond %{HTTP:Upgrade} !=websocket [NC]
        RewriteRule /(.*)           https://x.x.x.x:443/$1 [P,L]


        ProxyPass / https://x.x.x.x:443/
        ProxyPassReverse / https://x.x.x.x:443/
        ServerName myname.name.com
        Include /etc/letsencrypt/options-ssl-apache.conf
        ServerAlias myalias.name.com
        SSLCertificateFile <path to fullchain>/fullchain.pem
        SSLCertificateKeyFile <path to key>/privkey.pem
</VirtualHost>




(Namen, Pfade und IP Adressen sind natürlich hier „anonymisiert“, auf dem Server aber richtig.

Bekomme im apache access log aber immer den folgenden Fehler:

[27/Jul/2019:08:59:02 +0000] „GET /api/wfc/12579 HTTP/1.1“ 502 484 „-“ „Mozilla/5.0 (iPad; CPU OS 12_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.1 Mobile/15E148 Safari/604.1“

und zwar bei der Passwortabfrage, also dem Moment, wo Websocket benutzt wird. Der Zugriff auf die Webfront login Seite geht ohne Probleme, ebenso lief es (aus bekannten Gründen) auch mit IPS 5.0. Irgendwas passt also mit Websocket nicht.

Ich hatte mit 5.1 und nginx als Reverse Proxy auch das Problem, was ich aber durch folgende Zeilen in der nginx Konfiguration lösen konnte:

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";

Jetzt nach Upgrade auf 5.2-4062 (egal ob Windows oder RPi) klappt aber leider weder Login in das Web Front noch in die Web Console. Auf der Web Console bekomme ich sogar kurz folgende kryptische Fehlermeldung. Was muss ich tun bzw. wie kann ich das Problem weiter eingrenzen?
27-08-_2019_15-48-46.png

Wie sieht denn der Rest deiner nginx Konfig aus?

Seit der 5.2 nutzt auch die Konsole WebSokets. Somit musst du den /api/ Entpunkt auch dafür freischalten. Und schau mal im Changelog… dort haben sich einige Pfade geändert.

paresy

…nginx Reverse Proxy ist eigentlich straight forward konfiguriert:

server {
        server_name symcon-xxxxxxxxx.org;

        listen 443 ssl;
        include snippets/certbot.conf;

        access_log /var/log/nginx/symcon-xxxxxxxxx.access.log;
        location / {
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "Upgrade";
                proxy_connect_timeout 10s;
                proxy_read_timeout 90;

                proxy_pass      http://xx.xx.xx.xx:3777;
                proxy_redirect  http://xx.xx.xx.xx:3777 https://symcon-xxxxxxxxx.org;
        }
}

Im nginx error.log auch nichts auffälliges sichtbar.

Kannst du in deinem Browser mal die Entwicklerkonsole auf machen und schauen, woher diese Fehlermeldung direkt kommt? Dort solltest du über den Netzwerk-Reiter an die Informationen kommen.

paresy

…wirklich sonderbar - nichts geändert und trotzdem geht es jetzt wieder mit dem Reverse Proxy. Fehler kann ich leider nicht mehr nachstellen und Loggen. Danke trotzdem!

Bei mir geht das nur im internen Netzwerk. Von extern kommt weiterhin die 401 Meldung

Hier meine nginx/letsencrypt Docker Konfiguration:


server {
        listen 443 ssl;

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

        server_name xxxxxxx;

        include /config/nginx/ssl.conf;

        client_max_body_size 0;

location / {
    proxy_pass http://xxxxxx:3777;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Origin "";
}
}

Hab ich noch etwas übersehen?

Keiner eine Idee, was ich noch falsch mache oder vergessen habe?

Aktuell nicht. Hast du mal geschaut, ob beim 401 irgendwie in den Browser Entwicklertools mehr Informationen kommen? Oder mal im Nginx Log geschaut?

paresy

Hallo zusammen,

hab das aktuelle Docker Image am Laufen. Läuft über einen HAProxy auf der OPNsense tadellos. Nur die mobile iOS App funktioniert nicht. Es kommt der Fehler ‚Parse Error‘. Folgender Fehler im HAProxy:

2020-02-06T21:45:04 haproxy[11018]: 172.16.X.XX:64639 [06/Feb/2020:21:45:04.510] https_lan_wan~ https_lan_wan/<NOSRV> -1/-1/-1/-1/0 503 237 - - SC-- 1/1/0/0/0 0/0 „POST /api/ HTTP/2.0“

UPDATE: Konnte ich lösen mit einer weitere Condition (Path starts with) /api in der entsprechenden Rule

Hi,

auch wenn das hier schon nicht mehr ganz frisch ist…
Ich hatte ähnliche Probleme mit IIS 10 auf Win Server 2016 also reverse proxy.

Bei mir zeigt eine Subdomain auf den Webserver von IPS (Port 82).

Bei mir ging es am ende so:

Reverse proxy einstellen.
Websocket Protocol installieren.
Und compressed HTTP überschreiben siehen: https://techcommunity.microsoft.com/t5/iis-support-blog/iis-acting-as-reverse-proxy-where-the-problems-start/ba-p/846259

Hallo 7Weazel7 ich beschäftige mich nun etwas über 1 Woche mit dem HAProxy und bekomme beim Zugriff ebenfalls einen „Parse Error“ Webfront über dem Browser funktioniert über die App leider nicht. Da du das Problem gelöst hast und für mich alles Neuland ist würde ich dich bitten deine Lösung mit Condition (Path starts with / app für einen laien zu beschreiben. Vielen Dank im voraus!

Bin weg vom HA Proxy zu Nginx Proxy Manager

Möchte aber bald auf Cloudflare Tunnels umsteigen