Wenn man einen UniFi Controller hinter einen ReverseProxy (in meinem Fall einen nginx) betreibt bekommt man oft nach dem einloggen einen WebSocket connection error
Das lässt sich einfach mit einer kleinen Konfig-Änderung am nginx-ReverseProxy beheben:
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection „upgrade“;
Diese Zeilen bewirken ein sauberes Weiterleiten von WebSocket-Aufrufen. Nachdem diese Zeilen die die Konfiguration eingetragen und der nginx seine Konfiguration neu geladen hat funktioniert der Aufruf ohne den Fehler 🙂
Hier noch meine nginx-Konfig:
server { listen 80; listen [::]:80; server_name unifi.domain.net; include /etc/nginx/snippets/letsencrypt.conf; # Redirect any HTTP request to HTTPS location / { return 301 https://unifi.domain.net;} error_log /var/log/nginx/unifi-error.log; access_log /var/log/nginx/unifi-access.log; } server { listen 443; listen [::]:443; server_name unifi.domain.net; #cipers ssl_protocols TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; ssl_ecdh_curve secp384r1; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 valid=300s; resolver_timeout 5s; add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; # Enable SSL ssl on; ssl_certificate /etc/letsencrypt/live/unifi.domain.net/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/unifi.domain.net/privkey.pem; ssl_session_timeout 5m; # Set global proxy settings proxy_read_timeout 360; proxy_http_version 1.1; proxy_pass_request_headers on; proxy_pass_header Date; proxy_pass_header Server; 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 Accept-Encoding ""; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; location / {proxy_pass https://localhost:8443;} error_log /var/log/nginx/unifi-error.log; access_log /var/log/nginx/unifi-access.log; }
Quelle: nginx.org