Introducción
Cuando se instala un certificado SSL en el servidor, el sitio web no está disponible a través de una conexión HTTPS segura de forma predeterminada. Debe agregar " HTTPS " a una URL cada vez que necesite conectarse de forma segura. La mejor manera de lograr la máxima seguridad para los visitantes del sitio web es habilitar un redireccionamiento automático de HTTP a HTTPS.
Este tutorial le mostrará cómo redirigir una URL de HTTP a HTTPS, por ejemplo, de http://example.it a https://example.it, con Apache en Ubuntu 18.04.
Prerrequisitos
Este tutorial asume que tiene privilegios de superusuario, es decir, sudo o root, en el servidor que ejecuta Nginx. Si aún no lo ha configurado, siga este tutorial: Configuración inicial de Ubuntu 18.04 LTS.
Se supone que Nginx está instalado. Si no está instalado, siga este tutorial: Cómo instalar Linux Nginx MySQL PHP (LEMP) en Ubuntu 18.04 LTS
Configurar el redireccionamiento de HTTP a HTTPS
Si usa certificados SSL, entonces tiene una conexión activa con el protocolo HTTPS y desea redirigir de www a non-www (o viceversa) y de HTTP a HTTPS continúe leyendo.
Abra el archivo de configuración de Nginx:
sudo nano /etc/nginx/sites-available/default
Agregue un nuevo bloque de servidor al comienzo del archivo para administrar conexiones HTTP y redirigir a HTTPS. Modifique el parámetro server_name ingresando su nombre de dominio tanto sin www como con www, también modifique el parámetro de retorno configurando la URL preferida, en nuestro caso la versión sin www, así:
server {
listen 80;
listen [::]:80;
server_name TUO_DOMINIO.it www.TUO_DOMINIO.it;
return 301 https://TUO_DOMINIO.it$request_uri;
}
Guarde y cierre el archivo presionando CTRL + X, seguido de Y para guardar los cambios y luego ENTER si está usando nano.
Cambie el bloque del servidor principal. Cambie el parámetro Listen al puerto 443 y agregue el parámetro ssl. Incluya la ruta a sus certificados, si aún no están incluidos, y al final del bloque agregue una condición if que establezca una redirección automática a su URL preferida, en este caso sin www. Si prefiere crear un no-www a www redirección, revertir los parámetros nombre_servidor y retorno en ambos bloques de servidor.
server {
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name TUO_DOMINIO.it www.TUO_DOMINIO.it;
location /{
try_files $uri $uri/=404;
}
#include your certificates...
if ($host = 'www.TUO_DOMINIO.it') {
return 301 https://TUO_DOMINIO.it$request_uri;
}
}
Entonces, la configuración final con redirección de www a non-www con https habilitado es la siguiente:
server {
listen 80;
listen [::]:80;
server_name TUO_DOMINIO.it www.TUO_DOMINIO.it;
return 301 https://TUO_DOMINIO.it$request_uri;
}
server {
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name TUO_DOMINIO.it www.TUO_DOMINIO.it;
location /{
try_files $uri $uri/=404;
}
#include your certificates...
if ($host = 'www.TUO_DOMINIO.it') {
return 301 https://TUO_DOMINIO.it$request_uri;
}
}
Reinicie Nginx:
sudo service nginx restart
Los cambios deberían surtir efecto de inmediato.
Conclusión
En este tutorial aprendimos cómo configurar las reglas de redireccionamiento para Nginx de www a non-www y viceversa, y de http a https.
¡Eso es todo! La redirección de Nginx ahora está configurada correctamente.