O $server_name
refere-se ao nome do servidor que você definiu no bloco do host virtual. Portanto, seu bloqueio adicional faz com que um ciclo de redirecionamento seja redirecionado para si mesmo.
Você tem que usar um nome de domínio literal lá em vez de uma variável.
Para o domínio SSL com www
, você precisa adicionar listen 443 ssl;
aos valores de bloco e certificado.
Então, esse deve ser seu terceiro bloco:
server {
listen 80;
listen 443 ssl;
server_name www.example.com;
return 301 https://example.com$request_uri;
include snippets/ssl-example.com.conf;
include snippets/ssl-params.conf;
...
}