Você está quase lá do que eu vejo; Eu apenas configuraria as coisas de maneira um pouco diferente (com base nos seus requisitos descritos), apenas para simplificar um pouco as coisas. Uma coisa que eu gostaria de esclarecer é que você não parece ter incluído um segmento dev.example.com na sua configuração?
Independentemente disso, veja como eu melhoraria sua configuração atual:
# Primary block including SSL redirect
server {
listen 80;
listen 443 ssl;
server_name example.com;
root /var/www/example.com;
index index.html;
ssl_certificate <my-path-here>.crt;
ssl_certificate_key <my-path-here>.key;
if ( $scheme = http ){
rewrite ^ https://$server_name$request_uri? permanent;
}
}
# WWW Redirect
server {
listen 80;
listen 443 ssl;
server_name www.example.com
ssl_certificate <my-path-here>.crt;
ssl_certificate_key <my-path-here>.key;
rewrite ^ https://example.com$request_uri? permanent;
}
Para esclarecer o que precede: esta é uma maneira "limpa" de fazer as coisas; se alguém solicitar seu site em http://example.com
, eles serão redirecionados para https://example.com
pela declaração if
e, da mesma forma, serão veiculados corretamente no site se solicitá-lo via https (o que seria um problema com declarações separadas como você teve antes).
Se eles tentarem acessar o site por meio de http://www.example.com
, serão redirecionados ou, via https://www.example.com
, negociarão corretamente o SSL, mas ainda serão redirecionados como acima.
Como eu notei, você não incluiu nenhum segmento relacionado ao dev.example.com em seu arquivo de configuração - presumo que isso seja porque você já está trabalhando, mas se não, por favor sinta-se à vontade para comentar sobre isso e eu Ficarei feliz em ajudá-lo a incluí-los nos itens acima.
Espero que ajude!