Me gustaría pedir ayuda con la siguiente configuración de Nginx, para que las URL como https://www.mywebsite.com
se reescriban como https://mywebsite.com
. Actualmente estoy usando la siguiente configuración:
server {
server_name www.mywebsite.com;
return 301 $scheme://mywebsite.com$request_uri;
}
server {
listen 80;
server_name mywebsite.com;
# Some more settings...
}
server {
listen 443 ssl;
server_name mywebsite.com;
ssl_certificate path_to_ssl_certificate;
ssl_certificate_key path_to_ssl_certificate_key;
# Some more settings...
}
En caso de que eso importe, el certificado que estoy usando es un certificado SSL comodín que fue autofirmado usando OpenSSL en el propio servidor (Ubuntu 12.04). Lo que pasa es que www.mywebsite.com
redirige correctamente a mywebsite.com
, perohttps://www.mywebsite.com
no esredirigir a https://www.mywebsite.com
(es decir, www
todavía aparece al ver la página en un navegador). ¿Qué puedo estar haciendo mal?
Respuesta1
La solución es arreglar el primer bloque del servidor a esto:
server {
listen 80;
listen 443;
server_name www.mywebsite.com;
return 301 $scheme://mywebsite.com$request_uri;
}
Por ejemplo, olvidó capturar las conexiones www.mywebsite.com en el puerto SSL, eso es todo. Por cierto, es la mejor manera de eliminar www del nombre del sitio, buena elección.
Respuesta2
Su redirección ocurre en un host virtual que solo escucha en el puerto 80. Para redirigir las solicitudes que llegan a través de SSL necesita un host virtual que escucha en el puerto 443 con SSL. A menos que todos sus navegadores admitanSNI, solo puede tener un host virtual SSL, por lo que la regla debe incluirse en su server
bloque SSL existente.
if ($host = www.mywebsite.com) {
rewrite ^ https://mywebsite.com$request_uri? permanent;
}