Leiten Sie alle Anforderungen bis auf ein Unterverzeichnis an HTTPS um

11

Ich versuche, von selbstsignierten Zertifikaten zu Let's Encrypt-Zertifikaten auf meinem Nginx-Webserver zu wechseln.

Derzeit leite ich alle Anfragen an http/80weiter https/443, wobei ein selbstsigniertes Zertifikat verwendet wird, das ich vor einiger Zeit erstellt habe.

Nun - soweit ich weiß, stellt Let's Encrypt eine Anfrage an Port 80 (da ich die webrootOption von verwende certbot). Diese Anforderungen werden umgeleitet, wodurch die Zertifikatgenerierung nicht erfolgreich ist.

Ich habe versucht, dies mit dem folgenden Serverblock zu erreichen, der Port 80 überwacht:

server {
        listen  80;     
        server_name     sub.domain.tld;
        server_tokens   off;


        location /.well-known {
                root /var/www/letsencrypt;
        }

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

Anfragen /.well-knownwerden aber https/443trotzdem weitergeleitet.

Wie kann ich alle Anfragen von http/80bis https/443mit Ausnahme der Anfragen an umleiten /.well-known/?

SaAtomic
quelle
1
Soweit mir bekannt ist, erfordert die Option webrootof certbotnur einfaches http.
SaAtomic
2
Wie haben Sie die Weiterleitung überprüft? Ich denke, Ihr Browser respektiert HSTS-Header für Ihre Domain, aber lassen Sie uns verschlüsseln, Bot würde es ignorieren. Überprüfen Sie mit wget/curl
Alexey Ten

Antworten:

15

Versuche dies:

server {
    listen  80;     
    server_name     sub.domain.tld;
    server_tokens   off;

    root /var/www/letsencrypt;

    location /.well-known {
        try_files $uri $uri/ =404;
    }

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

Da try_filesIhr virtueller Server keinen Eintrag enthielt, wusste er nicht, was er mit eingehenden Anfragen tun sollte /.well-known.

Tero Kilkanen
quelle
2
locationohne try_filesnur Datei aus dem rootVerzeichnis zu senden.
Alexey Ten
1
komisch, ich habe genau die gleiche Situation und ich benutze nicht try_filesund es funktioniert perfekt für mich. Tatsächlich habe ich genau die gleiche Konfiguration wie in der Frage angegeben. Der einzige Unterschied ist location /.well-known/statt location /.well-known(beachten Sie den abschließenden Schrägstrich). Vielleicht liegt dort das Problem?
Olle Kelderman