¿Qué es la redirección? #
Sabemos que hay personas que aún se encuentran acostumbradas a iniciar las direcciones de sitios web con http:// pues fue el estándar que se usó desde los inicios de la web y hasta hace unos años. De igual forma sabemos que puedes ya tener la dirección de tu sitio web publicada en diferentes medios sin incluir https. Por medio de una redirección se puede capturar todo el tráfico que llegue a tu sitio a través de una conexión insegura y hacerlo cambiar a la conexión segura https, todo esto en fracciones de segundo y sin necesidad de intervención por parte del visitante.
Tipos de redirección #
Históricamente se han empleado varios tipos de redirección, a continuación te listamos los mas comunes:
- Redireccion por JavaScript. En esta redirección hay un script en lenguaje JavaScript que es el encargado de sobreescribir la URL en el navegador, llevando al visitante al nuevo destino. La desventaja de este método es que se tiene que establecer la conexión insegura y descargar el JavaScript para que se realice la redirección, proceso que siempre podrá estar sujeto a errores.
- Redirección por frames o iframes. Dentro del código HTML del sitio web se incrusta un frame o “marco” que carga en su interior el sitio destino. En este método se tiene que establecer la conexión insegura, descargar el HTML con el frame o iframe y volver a cargar el sitio destino, además de que puede ocasionar problemas de navegación, bloqueo de elementos por políticas CORS y advertencias por parte del navegador.
- Redirección por encabezados. Este es el mejor método ya que realiza la redirección desde el inicio de la conexión insegura sin necesidad de descarga de código ni problemas de compatibilidad. Dentro de la redirección se incluye un código numérico que indica al navegador (y lo más importante, a los buscadores) si es una redirección temporal o permanente. Esta es la solución de la que hablaremos en este tutorial.
Redirección por encabezado HTTP 301 #
La redirección por encabezado HTTP con código 301 tiene la ventaja de que además de ser rápida y confiable, también alerta a los buscadores y a cualquier sistema de rastreo web que la dirección del sitio ha cambiado permanentemente, con lo que ellos a su vez podrán actualizar los enlaces a tu sitio.
Para habilitar la redirección por encabezado HTTP 301 en Nginx solo es necesario seguir estos pasos:
Editando el archivo de configuración #
Abre el archivo de configuración de tu sitio, comúnmente se encuentran en la ruta /etc/nginx/sites-available. El archivo deberá tener una estructura similar a la siguiente:
server {
listen 80;
listen [::]:80;
server_name tudominioseguro.com www.tudominioseguro.com;
# continuan los parámetros de configuración
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name tudominioseguro.com www.tudominioseguro.com;
ssl_certificate <strong>/ruta/a/tu/certificado.crt</strong>
ssl_certificate_key <strong>/ruta/a/tu/llave/privada</strong>
# continuan los parámetros de configuración
}
El siguiente paso será modificar el bloque de servidor o “server” para las conexiones HTTP (puerto 80) agregando la siguiente línea inmediatamente después de la línea que inicia con server_name.
return 301 https://www.tudominioseguro.com$request_uri;
Con esto estamos indicando al servidor Nginx que al llegar a dicha línea envíe un código 301 al visitante junto con una URL que se construye incluyendo rutas o archivos de consulta y que detenga la respuesta tras haber enviado la redirección (para evitar que siga procesando parámetros de configuración). Con este bloque, si un visitante escribe en el navegador:
http://www.tudominioseguro.com/pagina1.php
automáticamente la URL cambiará a:
https://www.tudominoseguro.com/pagina1.php
De esta forma no perderás tráfico por enlaces desde otros sitios web, buscadores, códigos QR o cualquier otro medio de enlace a una sección específica de tu sitio web. De igual forma, si el código de tu sitio web intenta cargar algun recurso como imágenes, javascripts, etc. usando la URL insegura, automáticamente recibirá la versión segura del archivo.
Reiniciando o recargando Nginx #
Una vez guardado el archivo ha llegado la hora de que nuestra configuración tome efecto. Para ello vamos a recargar o reiniciar el servidor Nginx. El proceso o el comando para realizarlo puede variar en función del sistema operativo y/o de la versión del mismo, pero estos son los más comunes:
Recarga de configuración:
- systemctl reload nginx
- service nginx reload
- /etc/init.d/nginx reload
- nginx -s reload
Para reiniciar (terminar y volver a ejecutar):
- systemctl restart nginx
- service nginx restart
- /etc/init.d/nginx restart
- nginx -s restart
Probando la nueva configuración #
Si todo ha salido bien, el servidor Nginx ya debe estarse ejecutando con la nueva configuración que incluye la redirección de tráfico a la versión segura de tu sitio web. Para confirmar que todo ha salido bien solo debemos ingresar a http://tudominioseguro.com (obviamente reemplazando tudominioseguro.com por el dominio para el cual hemos hecho la configuración y obtenido el certificado y teniendo cuidado de escribir http y no https). Al presionar Intro o Enter, debemos ser redireccionados automáticamente a la versión segura de tu sitio, esto lo puedes comprobar por el ícono que aparece a un costado de la URL y que al hacer click en el mismo te muestra que es una conexión segura.
Ejemplo en Mozilla Firefox

Ejemplo en Chrome


Enhorabuena. Nginx ya está redireccionando todo el tráfico inseguro de tu sitio a la versión segura y sin perder visitantes.