web-dev-qa-db-fra.com

Rediriger toutes les demandes à HTTPS, sauf pour un sous-répertoire

J'essaie de passer des certificats auto-signés pour crypter des certificats sur mon serveur Web Nginx.

Actuellement, j'ai redirigé toutes les demandes à http/80 à https/443, qui utilise un certificat auto-signé que j'ai créé il y a quelque temps.

Maintenant, à partir de ce que je comprends, crypterons apportons une demande au port 80 (comme j'utilise l'option webroot de certbot). Ces demandes sont redirigées, ce qui rend la génération de certificat infructueuse.

J'ai essayé d'y parvenir avec le bloc serveur suivant, écoutant au port 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;
        }
}

Mais demande à /.well-known sont redirigés vers https/443 de toute façon.

Comment puis-je rediriger toutes les demandes de http/80 à https/443, sauf les demandes à /.well-known/?

13
SaAtomic

Essaye ça:

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

Puisqu'il n'y avait pas try_files Entrée dans votre serveur virtuel, il ne savait pas quoi faire avec les demandes qui arrivent à /.well-known.

17
Tero Kilkanen