Cómo usar NGINX para redirigir todo el tráfico de HTTP a HTTPS

Cómo usar NGINX para redirigir todo el tráfico de HTTP a HTTPS

Si su sitio web está alojado con NGINX y tiene habilitado SSL, es una mejor práctica deshabilitar HTTP por completo y forzar todo el tráfico entrante a la versión HTTPS del sitio web. Esto evita tener contenido duplicado y garantiza que todos los usuarios del sitio solo estén navegando por la versión segura de su sitio web. También debe ver un refuerzo de SEO, ya que los motores de búsqueda prefieren páginas web no redundantes y seguras.

En esta guía, asumiremos que ya está usando NGINX en un sistema Linux y queremos redirigir todo el tráfico HTTP a HTTPS. Incluso si un usuario sigue un http: // Enlace, el sitio debe enviarlos a la página correcta y segura, que ocurre instantáneamente y sin la intervención del usuario.

Hay dos formas de configurar esta redirección en Nginx. Un método le permite configurar la redirección para sitios individuales. El otro método puede redirigir HTTP a HTTPS para todos los sitios Nginx en su servidor, lo cual es útil si tiene una configuración de múltiples sitios y desea evitar tener que aplicar exactamente la misma redirección a cada uno. Cubriremos las instrucciones paso a paso para ambos métodos a continuación. Empecemos.

NOTA
Usando apache en lugar de nginx? Hemos escrito una guía separada sobre cómo usar Apache para redirigir todo el tráfico HTTP a HTTPS.

En este tutorial aprenderás:

  • Cómo redirigir HTTP a HTTPS para sitios web individuales de NGINX
  • Cómo redirigir HTTP a HTTPS para todos los sitios web de Nginx
Redirigir el tráfico HTTP a HTTPS en Nginx Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Cualquier distribución de Linux
Software Nginx
Otro Acceso privilegiado a su sistema Linux como root o a través del sudo dominio.
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

Redirigir http a https para sitios individuales



Tendremos que realizar cambios en el archivo de configuración del servidor NGINX para redirigir el tráfico. Ábralo con tu editor de texto preferido.

$ sudo nano/etc/nginx/sites-disponible/your_conf_file 

Debe haber al menos dos bloques en este archivo, uno que controla la configuración de las conexiones HTTP (puerto 80) y otra que controla HTTPS (puerto 443). En la parte HTTP, inserte el siguiente código de redirección 301. Por supuesto, reemplace el dominio de ejemplo con el dominio de su sitio.

servidor escuchar 80; Ejemplo de server_name.com www.ejemplo.com; return 301 https: // ejemplo.com $ request_uri;  

Como puede ver, el código escucha en el puerto 80 para las conexiones entrantes a ejemplo.comunicarse y www.ejemplo.comunicarse. Luego redirige esas conexiones a la misma URL pero con https: //.

Debajo del bloque HTTP, necesitará un bloque HTTPS si aún no ha hecho uno.

servidor escuchar 80; Ejemplo de server_name.com www.ejemplo.com; return 301 https: // ejemplo.com $ request_uri;  servidor escuchar 443 ssl; Ejemplo de server_name.com; Ejemplo ssl_certificate.comunicarse.CRT; Ejemplo ssl_certificate_key.comunicarse.llave; # otra configuración 

Pero ¿qué pasa con las conexiones a https: // www.ejemplo.comunicarse (Observe el www.)? Para redirigir esas conexiones también, necesitaremos otro bloque con una redirección 301. En su totalidad, el archivo de configuración se vería así (aunque el suyo puede tener una configuración adicional):

servidor  # redirigir todo http a https escucha 80; Ejemplo de server_name.com www.ejemplo.com; return 301 https: // ejemplo.com $ request_uri;  servidor  # redirect https www. Escuche 443 SSL; server_name www.ejemplo.com; return 301 https: // ejemplo.com $ request_uri;  servidor escuchar 443 ssl; Ejemplo de server_name.com; Ejemplo ssl_certificate.comunicarse.CRT; Ejemplo ssl_certificate_key.comunicarse.llave; # otra configuración 


Asegúrese de utilizar un comando SystemCTL para reiniciar o recargar Nginx para que estos nuevos cambios entren en vigencia.

$ sudo systemctl recargar nginx 

Su sitio ahora siempre debe redirigir a una URL con el formato de https: // ejemplo.comunicarse, independientemente del enlace que esté precedido por http: // y/o www..

Redirigir http a https para todos los sitios

Para redirigir el tráfico para todos sus sitios web alojados en Nginx, ingrese el siguiente código en su archivo de configuración:

servidor escuchar 80 default_server; escuchar [::]: 80 default_server; nombre del servidor _; devolver 301 https: // $ host $ request_uri;  

Esto es más o menos lo mismo que el código anterior, excepto que usa variable $ anfitrión Por lo tanto, se puede aplicar a cualquier URL de que Nginx esté alojando. Este método puede ser un poco más conveniente, pero perderá parte del control granular que tiene cuando cada sitio tiene sus propios bloques de servidor. Use su propia discreción y elija el método que desee.

Conclusión

En la gran mayoría de los casos, no hay razón para continuar usando HTTP cuando su sitio puede ofrecer HTTPS. Es más seguro, le da tranquilidad al usuario, y el sitio recibirá un pequeño impulso de SEO. En este artículo, vimos lo fácil que era redirigir todo el tráfico a HTTPS y deshacernos de HTTP por completo. Cualquiera de estos métodos es viable para forzar el tráfico HTTP a HTTPS en su (s) sitio web (s).

Tutoriales de Linux relacionados:

  • Ubuntu 20.04: WordPress con instalación de Nginx
  • Cosas para instalar en Ubuntu 20.04
  • Introducción a los motores de almacenamiento MySQL
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Ubuntu 20.04 WordPress con instalación de Apache
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Mastering Bash Script Loops
  • Cosas para instalar en Ubuntu 22.04
  • Mint 20: Mejor que Ubuntu y Microsoft Windows?
  • Ubuntu 20.04 Guía