NGINX - Umleiten von www zu non-www nach der Umleitung von http zu https

1

Ich habe einige andere Antworten auf ähnliche Fragen sowie Tutorials zu DigitalOcean usw. ohne Erfolg überprüft. Entschuldigung für das, was wahrscheinlich ein sehr offensichtliches Problem ist - ich bin neu in diesem Bereich.

Im Wesentlichen muss ich Umleitungen einrichten, sodass http: //, https: // www . Und http: // www . Alle leiten zu https: // um.

Derzeit funktioniert https: // einwandfrei und http: // leitet zu https: // weiter. Ich muss den WWW-Verkehr umleiten, da das SSL-Zertifikat nur für Nicht-WWW konfiguriert ist. Wenn ich jedoch versucht habe, der Konfiguration einen weiteren Serverblock hinzuzufügen, um www (http und https) zu https: // umzuleiten, schließt der Server die Verbindung bei allen 4 Varianten.

Hier ist meine Konfiguration:

# HTTP - redirect to HTTPS
server {
    listen 80;
    server_name www.example.com example.com;
    return 301 https://example.com$request_uri;
}

# HTTPS www - redirect to non-www RESETS CONNECTION
#server {
#    listen 443;
#    server_name www.example.com;
#    return 301 https://example.com$request_uri;
#}


# HTTPS — proxy all requests to the Node app
server {
    # Enable HTTP/2
    listen 443 ssl http2;
    server_name example.com;

    # Use the Let’s Encrypt certificates
    ssl_certificate /etc/not/my/path/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/not/my/path/live/example.com/privkey.pem;

    # Include the SSL configuration from cipherli.st
    include snippets/ssl-params.conf;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://0.0.0.0:2368/;
        proxy_ssl_session_reuse off;
        proxy_set_header Host $http_host;
        proxy_cache_bypass $http_upgrade;
        proxy_redirect off;
    }
}

Kann mir jemand sagen, was ich falsch mache? Wieder weiß ich, dass es wahrscheinlich schmerzhaft offensichtlich ist, aber ich kann es einfach nicht zum Laufen bringen. Sollte ich dies mit etwas anderem als einer NGINX-Umleitung tun?

Lewis
quelle

Antworten:

2

Sie können den www.example.comhttps-Verkehr nur dann umleiten example.com, wenn Sie über das Zertifikat für verfügen www.example.com. Bei der SSL-Aushandlung wird der Domänenname verwendet, und die Umleitung erfolgt erst, nachdem die SSL-Ebene ausgehandelt wurde.

Tero Kilkanen
quelle
1
Ich verstehe, also muss ich ein weiteres Zertifikat registrieren ... Ich dachte, ich könnte das vermeiden. Vielen Dank.
Lewis
0
server {
    server_name www.example.com example.com
    listen 80;

    location / {
        rewrite ^/(.*)$ https://example.com/$1 permanent;
    }
}

server {
    server_name www.example.com;
    listen 443 ssl;

     [... ssl configuration ...]

    location / {
        rewrite ^/(.*)$ https://example.com/$1 permanent;
    }
}

server {
    server_name example.com;
    listen 443 ssl;


    [ ... main block ... ]
}
Drookie
quelle
Wirft immer noch einen NET :: ERR_CERT_COMMON_NAME_INVALID-Fehler beim Laden von WWW-Versionen. Irgendwelche Ideen..?
Lewis
Dies bedeutet, dass Sie nicht das Zertifikat haben, das mit dem übereinstimmt server_name.
Drookie