Veja como configura o redirecionamento do Nginx para que o site seja aprovado para entrar para a lista HSTS O segredo do redirect no nginx para ser aceito como HSTS é redirecionar primeiro para HTTPS e depois redirecionar novamente para adicionar ou remover o www
Esse primeiro exemplo é para sites WWW
Nesse caso vai existir apenas 1 redrect direto para o site https://www.exemplo.com.br.
Entra http://www.exemplo.com.br e sai https://www.exemplo.com.br
server {
listen 80;
listen [::]:80;
server_name www.exemplo.com.br;
return 301 https://www.exemplo.com.br$request_uri;
}
Nesse caso o url vai ser redirecionado para https://exemplo.com.br
Entra http://exemplo.com.br e sai https://exemplo.com.br
server {
listen 80;
listen [::]:80;
server_name exemplo.com.br;
return 301 https://exemplo.com.br$request_uri;
}
Nesse redirect o url https sem www vai receber novo redirect para https com www - redirecionando para https://www.exemplo.com.br
Para funcionar corretamente é preciso conter os certificados e o header HSTS
Entra https://exemplo.com.br e sai https://www.exemplo.com.br
server {
server_name exemplo.com.br;
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl on;
return 301 $scheme://www.exemplo.com.br$request_uri;
ssl_certificate /etc/letsencrypt/live/exemplo.com.br/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/exemplo.com.br/privkey.pem;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";
}
Coloque todo código como root, index, log, certificados e header HSTS Entra https://www.exemplo.com.br e não faz redirect
server {
server_name www.exemplo.com.br;
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /etc/letsencrypt/live/exemplo.com.br/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/exemplo.com.br/privkey.pem;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";
...
CODE
...
}
server {
listen 80;
listen [::]:80;
server_name www.exemplo.com.br;
return 301 https://www.exemplo.com.br$request_uri;
}
server {
listen 80;
listen [::]:80;
server_name exemplo.com.br;
return 301 https://exemplo.com.br$request_uri;
}
server {
server_name exemplo.com.br;
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl on;
return 301 $scheme://www.exemplo.com.br$request_uri;
ssl_certificate /etc/letsencrypt/live/exemplo.com.br/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/exemplo.com.br/privkey.pem;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";
}
server {
server_name www.exemplo.com.br;
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl on;
ssl_certificate /etc/letsencrypt/live/exemplo.com.br/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/exemplo.com.br/privkey.pem;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";
...
CODE
...
}
Faça teste em https://httpstatus.io/
Veja o resultado do teste abaixo: o link http vai para https depois para https com www o link http com www vai para https com www o link com htts sem www vai para https com www e o link com https e www não faz nenhum redirect
Envie seu site como HSTS em: https://hstspreload.org/
Esse exemplo é para sites não WWW
server {
listen 80;
listen [::]:80;
server_name www.exemplo.com.br;
return 301 https://www.exemplo.com.br$request_uri;
}
server {
listen 80;
listen [::]:80;
server_name exemplo.com.br;
return 301 https://exemplo.com.br$request_uri;
}
server {
server_name www.exemplo.com.br;
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl on;
return 301 $scheme://exemplo.com.br$request_uri;
ssl_certificate /etc/letsencrypt/live/exemplo.com.br/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/exemplo.com.br/privkey.pem;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";
}
server {
server_name exemplo.com.br;
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl on;
ssl_certificate /etc/letsencrypt/live/exemplo.com.br/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/exemplo.com.br/privkey.pem;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";
}
Publicado e mantido por supertutorial