Na sua configuração principal, você disse para ouvir em 80 e 443. Aqui estão as partes importantes de uma configuração para sua situação, supondo que você queira que o site responda apenas em https no subdomínio www.
A outra chave é que você pode ter que configurar um ouvinte para o domínio padrão, que atende a qualquer solicitação que atinja o servidor.
// Listen for requests for the main website
server {
server_name www.example.com;
listen 443 ssl http2; // https optional, need to build Nginx with correct module
ssl_certificatefullchain;
ssl_certificate_key privkey;
// locations etc
}
// Forward http requests for domain and www subdomain to main
server {
listen 80;
server_name example.com www.example.com;
return 301 https://www.example.com$request_uri;
}
// Forward https requests for root domain to main
server {
listen 443 ssl;
server_name example.com;
ssl_certificatefullchain;
ssl_certificate_key privkey;
return 301 https://www.example.com$request_uri;
}
Eu tenho essa configuração para lidar com o padrão
# This just prevents Nginx picking a random default server if it doesn't know which server block to send a request to
server {
listen 80 default_server;
server_name _;
return 444; # This means "go away", effectively
}
Eu tenho um grande tutorial e exemplos de arquivos de configuração disponíveis aqui .