Isso é tudo ...
server {
listen 80;
server_name *.mydomain.com;
#Rewrite all nonssl requests to ssl.
return 301 https://$host$request_uri;
}
Eu tenho uma certificação ssl curinga e estou tentando redirecionar todo o tráfego não-ssl para ssl. Atualmente estou usando o seguinte para redirecionar o URL não-subdomainded que está funcionando bem.
server {
listen 80;
server_name mydomain.com;
#Rewrite all nonssl requests to ssl.
rewrite ^ https://$server_name$request_uri? permanent;
}
quando faço o mesmo para * .mydomain.com, ele redireciona logicamente para
https://%2A.mydomain.com/
Como você redireciona todos os subdomínios para o equivalente em https?
Isso é tudo ...
server {
listen 80;
server_name *.mydomain.com;
#Rewrite all nonssl requests to ssl.
return 301 https://$host$request_uri;
}
A documentação oficial do NGINX encoraja o uso da diretiva de retorno em vez de usar a diretiva de reescrita para efetuar o redirecionamento. Isso é assim, já que a solicitação que está sendo reescrita não é destinada a esse servidor, mas ainda é processada nesse bloco de servidor. Portanto, os redirecionamentos são feitos corretamente com uma diretiva de retorno, pois todo o processamento é interrompido e uma resposta é enviada imediatamente. O NGINX desencoraja a reescrita para redirecionamento aqui: link
A diretiva de sintaxe para retorno é: URL do código de retorno; Como você estava originalmente fazendo uma reescrita permanente, portanto, você pode usar 301 como o código para responder, indicando que é um redirecionamento permanente. Seu endereço https será passado na seção url. Referência: link
Assim, sua configuração correta seria
server {
listen 80;
server_name *.mydomain.com;
#Redirect all nonssl requests to ssl.
return 301 https://$server_name$request_uri;
}
Isso provavelmente permitiria que você redirecionasse corretamente para seu domínio ssl, com um bloqueio de servidor curinga. Você também pode tentar o nome do servidor genérico de sublinhado '_' ou $ host, conforme sugerido no comentário acima. Deixe-nos saber!
Tente algo assim:
server {
listen 80;
server_name ~^(.*)\.mydomain\.com$;
set $servername $1;
rewrite ^(.*)$ https://$servername.mydomain.com/$1;
}
A captura é definir o servidor curinga e fazer redirecionamentos com base em seu nome.