SSL-Verschlüsselung für Home Assistant Upstream-Server über NGINX-Proxys

Hallo zusammen,

ich benötige Unterstützung bei der Konfiguration meines NGINX-Proxys, um meinen Home Assistant (HA) Upstream-Server SSL-verschlüsselt zu schützen. Die SSL-Zertifikate sind bereits eingerichtet, aber ich stoße auf Probleme bei der NGINX-Konfiguration.

Problem

Ich versuche, meinen Home Assistant über NGINX mit SSL zu schützen. Die NGINX-Konfiguration führt jedoch zu Fehlern, und der NGINX-Dienst kann nicht erfolgreich gestartet werden. Hier sind die spezifischen Fehlermeldungen, die ich erhalte:

nginx: [emerg] invalid number of arguments in "server_name" directive in /etc/nginx.conf:37
nginx: [warn] protocol options redefined for 0.0.0.0:443 in /share/nginx_proxy/nginx_proxy_default.conf:2
nginx: [warn] conflicting server name "example.com" on 0.0.0.0:80, ignored
nginx: [warn] conflicting server name "example.com" on 0.0.0.0:443, ignored

Konfiguration

Hier ist meine aktuelle NGINX-Konfiguration, die ich für den Proxy-Server verwende:

/share/nginx_proxy/nginx_proxy_default.conf

events {}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay     on;
    keepalive_timeout  65;

    # SSL Ciphers and Protocols
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:CHACHA20_POLY1305_SHA256:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384';
    ssl_prefer_server_ciphers on;

    # HTTP to HTTPS redirection
    server {
        listen 80;
        server_name example.com;

        location / {
            return 301 https://$host$request_uri;
        }
    }

    # HTTPS server block
    server {
        listen 443 ssl;
        server_name example.com;

        ssl_certificate /ssl/fullchain.pem;
        ssl_certificate_key /ssl/privkey.pem;

        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout 10m;
        ssl_session_tickets off;
        ssl_dhparam /etc/nginx/dhparam.pem; # Optional for additional security

        location / {
            proxy_pass https://example.com:8123;  # Upstream-Server mit SSL
            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;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
        }
    }
}

Fehleranalyse

  1. invalid number of arguments in "server_name" directive

    • Dies deutet auf ein Problem mit der server_name-Direktive hin. Ich habe nur eine Domain angegeben, also sollte dies korrekt sein. Was könnte hier schiefgehen?
  2. protocol options redefined und conflicting server name

    • Diese Warnungen erscheinen bezüglich der SSL-Protokoll-Optionen und Servernamen. Möglicherweise gibt es Konflikte in den Konfigurationen oder doppelte Einträge.

Fragen

  1. Muss ich die ssl_ciphers-Option anpassen, oder gibt es ein Problem mit der Konfiguration?
  2. Wie kann ich den Fehler mit der server_name-Direktive beheben?
  3. Welche zusätzlichen Schritte sollte ich unternehmen, um sicherzustellen, dass der Upstream-Server SSL-verschlüsselt ist und korrekt funktioniert?

Ich freue mich über jede Hilfe oder Hinweise, die ihr mir geben könnt. Danke im Voraus!

Ich würde Dir den NGINX Proxy Manager empfehlen. Kannst als Home Assistant Add-on verwenden oder stand alone.
Vorteile wäre, dass die Konfiguration komplett über die WEB Ui erfolgt ohne irgendwelche yaml oder Text Konfiguration.

Hier mal eins von vielen online Tutorials

Gruß
Osorkon

Hallo Osorkon,

vielen Dank für den Vorschlag :slight_smile: ! Ich habe den NGINX Proxy Manager tatsächlich früher verwendet und fand die Web-UI sehr praktisch. Allerdings habe ich gehört, dass das Programm nur von einer einzelnen Person entwickelt und gewartet wird. Aus Sicherheitsgründen habe ich mich entschieden, es nicht mehr zu nutzen, da ich Bedenken habe, dass ein solches Projekt möglicherweise nicht ausreichend gepflegt oder zeitnah auf Sicherheitslücken reagiert.

Deshalb habe ich mich entschieden, eine andere Lösung zu verwenden, die mir mehr Sicherheit und Unterstützung bietet. Dennoch schätze ich deinen Vorschlag und werde die Weiterentwicklung des Projekts im Auge behalten.

Gruß,
Arne

Moin,

Und was steht in der Datei /etc/nginx.conf in Zeile 37?

Du hast noch irgendwo diese Servernamen example.com, nicht nur in Deiner nginx_proxy_default.conf, zudem sollten eigentlich in Deiner Konfiguration die wirkliche Domäne, oder ist Deine Domäne example.com?

VG
Bernd

Hallo Bernd,

vielen Dank für den Hinweis. Die Datei /etc/nginx.conf existiert bei mir nicht, daher kann ich den Fehler in dieser Datei nicht überprüfen. Die example.com-Einträge sind tatsächlich Platzhalter und sollten durch meine tatsächliche Domain ersetzt werden. In meiner Konfiguration sind überall die korrekten Domains eingetragen.

Danke für deine Hilfe!

Viele Grüße,
Arne