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:
- Todas las solicitudes HTTP dan como resultado una URL HTTPS que contiene el subdominio.
- 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_server
bloque para hacer coincidir cualquiera http
de https
los dominios que no estén definidos explícitamente en otro server
bloque. La https
pieza 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.