Minha intenção é redirecionar todas as solicitações para https://
de URLs prefixados para o domínio sem cobertura e para o www.*
equivalente. A URL acme-challenge
deve ser excluída.
Eu tentei com a configuração abaixo e fui redirecionado corretamente do domínio sem código, mas quando visito o www.
prefixado, sou apresentado ao servidor padrão, não redirecionado para o servidor na porta 443 e servido de a raiz do servidor https.
Por que isso acontece?
server {
listen 80;
listen [::]:80;
server_name example.org www.example.org;
location '/.well-known/acme-challenge/' {
root /var/www/challenges;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name example.org www.example.org;
ssl_certificate /etc/nginx/ssl/example.org.pem;
ssl_certificate_key /etc/nginx/ssl/example.org.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA;
ssl_session_cache shared:SSL:50m;
ssl_dhparam /etc/nginx/ssl/dhparams.pem;
ssl_prefer_server_ciphers on;
root /var/www/example.org/;
}