Atualmente estou apresentando o seguinte problema e, caramba, não consigo resolvê-lo. Os mais de 20 tópicos semelhantes que encontrei no Google não ajudam em nada.
Primeiro de tudo, criei um redirecionamento simples de HTTP para HTTPS, que se parece com isto:
server {
listen 80;
server_name my-domain.com;
return 301 https://my-domain.com$request_uri;
}
server {
listen 443 ssl http2;
server_name my-domain.com;
...
}
E isso funciona perfeitamente bem. Se eu tentar abrirmeu-domínio.com, serei redirecionado parahttps://meu-domínio.com. Mas ainda há o problema dos subdomínios. Se eu abrirwww.meu-domínio.comouteste.meu-domínio.com, gostaria que esses subdomínios fossem redirecionados para minha raizHTTPSdomínio: https://meu-domínio.com. Sem nenhum subdomínio na frente dele. O mesmo deve aparecer para subdomínios HTTPS. Eu literalmente quero banir qualquer subdomínio (por enquanto).
Eu tentei muitas configurações, como adicionar*.meu-domínio.compara server_name e ainda assim não funciona como esperado. Também tentei criar um redirecionamento HTTPS de *.my-domain.com para meu domínio HTTPS normal e ainda tenho um resultado semelhante com cada configuração:
- Todas as solicitações HTTP resultam em um URL HTTPS contendo o subdomínio.
- Todas as solicitações HTTPS nunca resultam em um URL HTTPS SEM um subdomínio nele.
Agora minha pergunta: Como posso redirecionar todos os subdomínios (http e https) para um URL https específico que NÃO contém nenhum subdomínio? Cada combinação deve sempre resultar em:https://meu-domínio.com$request_uri
desde já, obrigado
Atualizar:
Não resolvi meu problema totalmente, mas tenho algo com que posso conviver. Criei um CNAME de www.my-domain.com para my-domain.com na configuração do meu domínio. Também modifiquei o nginx e adicionei uma nova configuração de servidor que redireciona de 443 www.meu-domínio para https://meu-domínio. eu também tenho um servidor normal da porta 80 que redireciona também de www.meu-domínio para https://meu-domínio. Modifiquei meu certificado e adicionei www.my-domain à lista de domínios e subdomínios. Agora, todas as solicitações em www.my-domain (http ou https) serão redirecionadas parahttps://meu-domínio. Além disso, meu domínio (http e sem www.) será redirecionado parahttps://meu-domíniotambém. Isso parece "ok" para minhas necessidades.
Responder1
Você pode usar um default_server
bloco para corresponder a qualquer domínio http
e https
não definido explicitamente em outro server
bloco. A https
parte só funciona corretamente com certificados curinga.
server {
listen 80 default_server;
listen 443 ssl default_server;
... ssl configuration
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
...
}
Veresse documentopara detalhes.