Nginx redirige todos los subdominios a una URL que no sea de subdominio

Nginx redirige todos los subdominios a una URL que no sea de subdominio

Actualmente tengo el siguiente problema y carajo, no puedo resolverlo. Los > 20 hilos similares que encontré en Google no son de ayuda.

En primer lugar, creé una redirección HTTP a HTTPS simple, que se ve así:

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;
    ...
}

Y esto funciona perfectamente bien. Si intento abrirmi-dominio.com, seré redirigido ahttps:// mi-dominio.com. Pero todavía existe el problema con los subdominios. si abrowww.mi-dominio.comoprueba.mi-dominio.com, me gustaría que estos subdominios redirijan a mi raízHTTPSdominio: https://mi-dominio.com. Sin ningún subdominio delante. Lo mismo debería aparecer para los subdominios HTTPS. Literalmente quiero prohibir cualquier subdominio (por ahora).

He probado muchas configuraciones, como agregar*.mi-dominio.comal nombre_servidor, y aún así esto no funciona como se esperaba. También intenté crear una redirección HTTPS desde *.mi-dominio.com a mi dominio HTTPS normal, y todavía tengo un resultado similar con cada configuración:

  1. Todas las solicitudes HTTP dan como resultado una URL HTTPS que contiene el subdominio.
  2. Todas las solicitudes HTTPS nunca dan como resultado una URL HTTPS SIN un subdominio.

Ahora mi pregunta: ¿Cómo puedo redirigir cada subdominio (http y https) a una URL https específica que NO contenga ningún subdominio? Cada combinación siempre debe resultar en:https:// mi-dominio.com$request_uri

gracias de antemano

Actualizar:

No resolví mi problema por completo, pero tengo algo con lo que puedo vivir. Creé un CNAME desde www.mi-dominio.com a mi-dominio.com en la configuración de mi dominio. También modifiqué nginx y agregué una nueva configuración de servidor que redirige desde 443 www.mi-dominio a https:// mi-dominio. También tengo un servidor de puerto 80 normal que redirige también desde www.mi-dominio a https://mi-dominio. Modifiqué mi certificado y agregué www.mi-dominio a la lista de dominios y subdominios. Ahora cada solicitud en www.mi-dominio (http o https) se redirigirá ahttps://mi-dominio. Además, mi dominio (http y sin www.) redirigirá ahttps://mi-dominiotambién. Esto parece "bien" para mis necesidades.

Respuesta1

Puede utilizar un default_serverbloque para hacer coincidir cualquiera httpde httpslos dominios que no estén definidos explícitamente en otro serverbloque. La httpspieza sólo funciona correctamente con certificados comodín.

server {
    listen 80 default_server;
    listen 443 ssl default_server;
    ... ssl configuration
    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    ...
}

Vereste documentopara detalles.

información relacionada