Nginx redireciona todos os subdomínios para um URL que não seja de subdomínio

Nginx redireciona todos os subdomínios para um URL que não seja de subdomínio

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:

  1. Todas as solicitações HTTP resultam em um URL HTTPS contendo o subdomínio.
  2. 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_serverbloco para corresponder a qualquer domínio httpe httpsnão definido explicitamente em outro serverbloco. A httpsparte 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.

informação relacionada