Reindirizzare tutte le richieste a HTTPS, tranne una sottodirectory


13

Sto cercando di passare da certificati autofirmati a Let's Encrypt certificati sul mio server web nginx.

Attualmente, reindirizzare tutte le richieste per http/80a https/443, che utilizza un certificato auto firmato ho creato qualche tempo fa.

Ora, da quello che ho capito Let's Encrypt fa una richiesta alla porta 80 (come sto usando l' webrootopzione di certbot). Queste richieste vengono reindirizzate, il che rende la generazione del certificato non riuscita.

Ho provato a raggiungere questo obiettivo con il seguente blocco server, ascoltando alla porta 80:

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;
        }
}

Ma le richieste da /.well-knownreindirizzare https/443comunque.

Come posso reindirizzare tutte le richieste da http/80a https/443, tranne le richieste a /.well-known/?


1
Per quanto ne so, l' opzione webrootof certbotrichiede un semplice http.
SaAtomic,

2
Come hai controllato il reindirizzamento? Immagino che il tuo browser rispetti le intestazioni HSTS per il tuo dominio, ma crittografiamo il bot lo ignorerebbe. Verificare con wget/curl
Alexey Ten

Risposte:


17

Prova questo:

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;
    }
}

Poiché non vi era alcuna try_filesvoce nel tuo server virtuale, non sapeva cosa fare con le richieste in arrivo /.well-known.


2
locationsenza try_filessemplicemente inviare il file dalla rootdirectory.
Alexey Ten,

1
strano, ho la stessa identica situazione e non uso try_filese funziona perfettamente per me. In effetti ho la stessa configurazione di quella indicata nella domanda. L'unica differenza è location /.well-known/invece di location /.well-known(notare la barra finale). Quindi forse dov'è il problema?
Olle Kelderman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.