Nginx redirige www a no www y viceversa en Ubuntu 20.04

1 mar 2021 5 min di lettura
Nginx redirige www a no www y viceversa en Ubuntu 20.04
Indice dei contenuti

Introducción

Cuando su sitio web o aplicación está en funcionamiento con un dominio, a menudo es preferible permitir que los usuarios accedan a él a través del nombre de dominio simple o mediante www. Si bien hay muchas formas de configurarlo, su mejor opción, por razones de coherencia y SEO, es elegir qué dominio prefiere, simple o www, y redirigir el otro a su dominio preferido. Este tipo de redireccionamiento se denomina redireccionamiento permanente o "redireccionamiento 301" y se puede configurar fácilmente configurando correctamente los registros de recursos DNS y el servidor web.

Este tutorial le mostrará cómo redirigir una URL www a no www y viceversa, por ejemplo, de www.example.it a example.it, con Nginx en Ubuntu 20.04 LTS.

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 20.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 20.04 LTS

También es necesario tener disponible un nombre de dominio activo y en funcionamiento. Si los registros DNS ya están activos y configurados correctamente, omita el siguiente párrafo.

Configurar registros DNS

Para configurar el redireccionamiento deseado, www.example.it a example.it o viceversa, debe tener un registro A para cada nombre.

El nombre de host debe ser su dominio, por ejemplo, it, y la dirección IP debe estar configurada como la dirección IP pública de su servidor Nginx. Esto creará automáticamente un registro A que apunte su dominio a la dirección IP especificada.

A continuación, agregue otro registro A con " www " como nombre de host (o "www.example.it" si solo "www" no funciona) y especifique la misma dirección IP.

Nota: Esto también funcionará con registros CNAME siempre que el registro A del nombre canónico se refiera a la dirección IP del servidor web Nginx.

Su servidor ahora debería ser accesible a través del dominio www y no www, pero aún necesitamos configurar el redireccionamiento.

Configurar el redireccionamiento de www a no www

Configurar las reglas de redireccionamiento de www a non-www y viceversa con Nginx es muy simple.

Abra el archivo de configuración de Nginx:

sudo nano /etc/nginx/sites-available/default

El archivo predeterminado debería verse así, verifique si su nombre de dominio está configurado en el parámetro server_name sin www:

server {
 listen 80;
 listen [::]:80;

 root /var/www/html;
 index index.html index.htm index.nginx-debian.html;

 server_name TUO_DOMINIO.it;

 location /{
 try_files $uri $uri/=404;
 }
 }

Agregue las siguientes líneas de código en la parte superior del archivo, cambie el parámetro server_name a su dominio y www, y cambie el retorno 301 a la dirección de dominio sin www, así:

server {
 listen 80;
 server_name www.TUO_DOMINIO.it;
 return 301 http://TUO_DOMINIO.it$request_uri;
 }

Entonces, el resultado se verá así:

server {
 listen 80;
 server_name www.TUO_DOMINIO.it;
 return 301 http://TUO_DOMINIO.it$request_uri;
 }


 server {
 listen 80;
 listen [::]:80;

 root /var/www/html;
 index index.html index.htm index.nginx-debian.html;

 server_name TUO_DOMINIO.it;

 location /{
 try_files $uri $uri/=404;
 }
 }

Guarde y cierre el archivo presionando CTRL + X, seguido de Y para guardar los cambios y luego ENTER si está usando nano.

Reinicie Nginx:

sudo service nginx restart

En este punto, la redirección para Nginx de www a non-www debería funcionar bien.

Configurar el redireccionamiento sin www a www

Por el contrario, para configurar las reglas de redireccionamiento que no son de www a www, simplemente necesita cambiar el nombre del servidor y el redireccionamiento 301 de la configuración anterior.

Abra el archivo de configuración de Nginx:

sudo nano /etc/nginx/sites-available/default

El archivo predeterminado debería verse así, verifique si su nombre de dominio está configurado con www en el parámetro server_name:

server {
 listen 80;
 listen [::]:80;

 root /var/www/html;
 index index.html index.htm index.nginx-debian.html;

 server_name www.TUO_DOMINIO.it;

 location /{
 try_files $uri $uri/=404;
 }
 }

Agregue las siguientes líneas de código en la parte superior del archivo, cambie el parámetro server_name a su dominio y sin www, y cambie el retorno 301 a la dirección de dominio a www, así:

server {
 listen 80;
 server_name TUO_DOMINIO.it;
 return 301 http://www.TUO_DOMINIO.it$request_uri;
 }

Entonces, el resultado se verá así:

server {
 listen 80;
 server_name TUO_DOMINIO.it;
 return 301 http://www.TUO_DOMINIO.it$request_uri;
 }


 server {
 listen 80;
 listen [::]:80;

 root /var/www/html;
 index index.html index.htm index.nginx-debian.html;

 server_name www.TUO_DOMINIO.it;

 location /{
 try_files $uri $uri/=404;
 }
 }

En este punto, la redirección para Nginx de www a non-www debería funcionar bien.

Guarde y cierre el archivo presionando CTRL + X, seguido de Y para guardar los cambios y luego ENTER si está usando nano.

Reinicie Nginx:

sudo service nginx restart

Los cambios deberían surtir efecto de inmediato.

Configurar el redireccionamiento de www a no www con 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 las 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 configurado a 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.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.