Redirecionar todas as solicitações para HTTPS, exceto para um subdiretório

8

Estou tentando migrar de certificados autoassinados para Vamos criptografar certificados no meu servidor nginx.

Atualmente, redireciono todas as solicitações para http/80 para https/443 , que usa um certificado auto-assinado que criei há algum tempo.

Agora - pelo que entendi vamos criptografar faz um pedido para a porta 80 (como eu estou usando a opção webroot de certbot ). Essas solicitações são redirecionadas, o que torna a geração do certificado mal sucedida.

Eu tentei fazer isso com o seguinte servidor, ouvindo na 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;
        }
}

Mas as solicitações para /.well-known são redirecionadas para https/443 de qualquer maneira.

Como posso redirecionar todas as solicitações de http/80 para https/443 , exceto as solicitações para /.well-known/ ?

    
por SaAtomic 12.05.2017 / 11:53

1 resposta

11

Tente isto:

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

Como não havia nenhuma entrada try_files em seu servidor virtual, ele não sabia o que fazer com as solicitações recebidas em /.well-known .

    
por 12.05.2017 / 12:27