Atualmente, você tem um bloco de servidor que também é o bloco de servidores padrão.
Você deve separar isso em dois blocos. Um bloco lida com os domínios nomeados e outro lida com todos os domínios inexistentes:
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com test.example.com prod.example.com;
root /usr/share/nginx/html;
index index.html
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
Muitas das diretivas ssl_xxx
podem ser colocadas acima dos blocos server
(dentro do bloco http
ao redor) para que sejam herdadas por ambos - ou você pode copiá-los em cada bloco de servidor (sua escolha).
Veja este documento para saber mais.