Вот пример конфига, который работает у меня. Весь незащищенный трафик перенаправляется с порта 80 (HTTP) на порт 443 (HTTPS):
server {
listen 80;
server_name my.domain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name my.domain.com;
# Всегда используйте Strict-Transport-Security что бы предотвратить перехват трафика третьей стороной на транзитном роутере
add_header Strict-Transport-Security "max-age=31536000" always;
[....]
}