Solução encontrada:
server {
listen 80;
listen 443 ssl;
server_name www.example.com;
ssl_certificate www.example.com.crt;
ssl_certificate_key www.example.com.key;
<some long config>
}
Normalmente, minha configuração do nginx é assim:
server {
listen 80;
server_name example.com;
<some long config>
}
server {
listen 443;
server_name example.com;
ssl on;
ssl_certificate qwe.crt;
ssl_certificate_key qwe.key;
<the same long config>
}
Como encaminhar todas as solicitações https para a diretiva http server (não enviar redirecionamento para o cliente, mas encaminhar para dentro do nginx) para que eu não precise escrever a mesma configuração duas vezes?
Você simplesmente tem duas diretivas de servidor ...
Claro que você pode fazer o inverso (https redirecionar para http) não faz diferença.
No Nginx, como posso reescrever todas as requisições http para https mantendo o subdomínio?
server {
listen 80;
server_name my.domain.com;
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
listen 443;
server_name my.domain.com;
ssl on;
[....]
}