Eu quero redirecionar http para https e nu para www.
Então minha configuração:
# http naked -> https www
# http www -> https www
server {
listen 80;
server_name example.com www.example.com;
return 301 https://www.example.com$request-uri;
}
# https naked -> https www
server {
listen 443 ssl http2;
server_name example.com;
#ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem # <--- ??
#ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem # <--- ??
return 301 https://www.$host$request-uri;
}
# https www
server {
listen 443 ssl http2;
server_name www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem
}
Preciso repetir o material SSL mostrado como ??
no bloco do meio?
Cada virtualhost SSL deve definir key/cert. Então, no seu caso, se você escreveu "listen ... ssl", você deve escrever linhas ssl_certificate. Não é importante se esse par de chave/certificado será usado para qualquer outra coisa.
Você pode ter apelidos. Ou seja, se o seu par de chave/certificado em /etc/letsencrypt/live/example.com for válido para example.com e www.example.com (ou seja, esse é o certificado SAN) e você deseja veicular o mesmo conteúdo de www.example .com e example.com sem redirecionamento, você pode ter apenas um vhost ssl no nginx: server_name example.com www.example.com;
Você pode redirecionar mesmo neste caso, mas acho que é mais fácil entender e manter uma configuração se forem vhosts distintos.