Cómo configurar los bloques Nginx en Ubuntu 20.04

En Nginx, los bloques de servidor se utilizan para definir información de dominio específica. Ayuda a alojar múltiples dominios o sitios web. Cada bloque contiene información específica del dominio como la raíz del documento, el SSL, el puerto y más. Los bloques de servidor Nginx son similares a los hosts virtuales de Apache.

Cómo configurar los bloques Nginx en Ubuntu

En este tutorial, aprendemos Cómo configurar los bloques Nginx en Ubuntu 18.04/20.04.

Requisitos previos

Requiere una instancia de Ubuntu 18.04/20.04. La instancia debe tener instalado Nginx. Se requiere un usuario con acceso sudo. Puedes seguir este tutorial para cumplir estos requisitos:

Paso 1. Crear la estructura del directorio

La raíz del documento es el directorio donde se almacenan los archivos del sitio web de un nombre de dominio y se sirven en respuesta a las solicitudes. Podemos establecer la raíz del documento en cualquier ubicación que queramos, pero en este artículo, utilizaremos la siguiente estructura de directorios:

/var/www/
├── domain1.com
│   └── images
│   └── index.html
│   └── style.css
├── domain2.net
│   └── images
│   └── index.html
│   └── style.css

Básicamente, crearemos un directorio independiente para cada dominio que queramos alojar en nuestro servidor dentro del directorio /var/www.

Vamos a crear el directorio raíz para nuestros dominios:

sudo mkdir -p /var/www/domain1.com

Para las pruebas, crearemos un directorio index.html, style.css e imágenes dentro del directorio raíz del documento del dominio

cd /var/www/domain1.com/

/var/www/domain1.com$ sudo mkdir images index.html style.css

Abre nuestro editor y crea el archivo de demostración:/var/www/dominio1.com/index.html

<!DOCTYPE html> <html lang="en" dir="ltr">

<head> <meta charset="utf-8">

<title>Welcome to domain1.com</title> <link rel="stylesheet" href="style.css"/>

</head>

<body> <h1 style="color:green;text-align:center;">Success! domain1.com home page!</h1>

</body>

</html>

Aquí estamos ejecutando los comandos como usuario sudo y los archivos y directorios recién creados son propiedad del usuario root.

Para evitar cualquier problema de permisos podemos cambiar la propiedad del directorio raíz del documento del dominio al usuario Nginx (www-data):

sudo chown -R www-data: /var/www/domain1.com

haremos los mismos procedimientos para el dominio2.net

Paso 2. Cómo configurar los bloques Nginx para cada dominio

Ahora que tenemos el contenido que deseamos servir, necesitamos crear los bloques del servidor que le dirán a Nginx cómo hacerlo.

Por defecto, Nginx contiene un bloque de servidor llamado dfault que podemos utilizar como plantilla para nuestras propias configuraciones. Comenzaremos diseñando el bloque de servidor de nuestro primer dominio, que luego copiaremos para nuestro segundo dominio y haremos las modificaciones necesarias.

1) Crear el primer archivo de bloque del servidor Nginx

Como se mencionó anteriormente, crearemos nuestro primer archivo de configuración del bloque del servidor copiando el archivo por defecto:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/domain1.com

Ahora, abre el nuevo archivo que has creado en tu editor de texto con privilegios sudo:

sudo nano /etc/nginx/sites-available/domain1.com

Después de editar el archivo, tendrá un aspecto similar al siguiente:/etc/nginx/sites-available/domain1.com

server { 

listen 80; 

listen [::]:80; 

root /var/www/domain1.com; 

index index.html index.htm index.nginx-debian.html; 

server_name domain1.com www.domain1.com; 

location / 

    { try_files $uri $uri/ =404; 

  } 
}

Esto es todo lo que necesitamos para una configuración básica. Guardar y cerrar el archivo para salir Ctrl + x.

2) Crear el segundo archivo de bloque del servidor Nginx

Ahora que tenemos nuestra primera configuración del bloque del servidor Nginx, podemos usarla como base para nuestro segundo archivo. Copiarlo para crear un nuevo archivo:

sudo cp /etc/nginx/sites-available/domain1.com /etc/nginx/sites-available/domain2.net

Abre el nuevo archivo con privilegios sudo en su editor:

sudo nano /etc/nginx/sites-available/domain2.net

Ajusta la directiva root para que apunte a la raíz del documento de nuestro segundo dominio y ajusta server_name para que coincida con el nombre de dominio de tu segundo sitio (asegúrese de incluir cualquier alias).

Cuando hayas terminado, es probable que nuestro archivo tenga un aspecto similar al siguiente:/etc/nginx/sites-available/domain2.net

server { 

listen 80; 

listen [::]:80; 

root /var/www/domain2.net; 

index index.html index.htm index.nginx-debian.html; 

server_name domain2.net www.domain2.net; 

location / 

{ try_files $uri $uri/ =404; 

  } 
}

Guarda y cierra el archivo para salir Ctrl + O y Ctrl + x.

Paso 3. Habilitar nuestros bloques del servidor Nginx y reiniciar Nginx

Ahora que tenemos nuestros archivos de bloque del servidor, necesitamos habilitarlos. Podemos hacerlo creando enlaces simbólicos desde estos archivos al directorio sites-enabled, que Nginx lee durante el arranque.

Podemos crear estos enlaces escribiendo:

sudo ln -s /etc/nginx/sites-available/domain1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/domain2.net /etc/nginx/sites-enabled/

Estos archivos están ahora en el directorio habilitado, Ahora tenemos tres bloques de servidores habilitados:

  1. dominio1.com: Responderá a las solicitudes de dominio1.com y www.domain1.com
  2. dominio2.net: Responderá a las solicitudes de dominio2.net y www.domain2.net
  3. Por defecto: Responderá a cualquier petición en el puerto 80 que no coincida con los otros dos bloques.

Con el fin de evitar un posible problema de server_names_hash_bucket que puede surgir de la adición de nombres de servidores adicionales, vamos a seguir adelante y ajustar un solo valor dentro de nuestro archivo /etc/nginx/nginx.conf. Abra el archivo ahora:

sudo nano /etc/nginx/nginx.conf

Dentro del archivo, encuentre la directiva server_names_hash_bucket_size. Quita el símbolo # para descomentar la línea:/etc/nginx/nginx.conf

http { . . . server_names_hash_bucket_size 64; . . . }

Guarda y cierra el archivo cuando hayas terminado.

A continuación, comprueba que no hay errores de sintaxis en ninguno de nuestros archivos Nginx:

sudo nginx -t

Si no se ha encontrado ningún problema, reinicia Nginx para habilitar nuestros cambios:

sudo systemctl restart nginx
Nginx should now be serving both of our domain names.

Paso 4. Verifique accediendo al sitio web

Ahora que ya tenemos todo configurado, debemos probar que nuestros bloques de servidor funcionan correctamente. Podemos hacerlo visitando los dominios en nuestro navegador web:

http://domain1.com
domain1

Deberías ver una página parecida a esta:
Si visitas tu segundo nombre de dominio, deberías ver un sitio ligeramente diferente:

http://domain2.net
domain2

Conclusión

En este tutorial, hemos aprendido a configurar el bloque de servidor Nginx en Ubuntu 18.04/20.04. Usando los bloques de servidor Nginx hemos configurado dos dominios para servir peticiones web.

Esto te va a resultar muy practico para poder alojar multiples instalaciones de wordpress dentro de un mismo servidor VPS.

¡Que tengas un Ingenioso día!

¡que tengas un ingenioso día!

Contrata tu plan Ingenios@ de Sistemas por 5€ al mes y responderé a todas tus preguntas sobre tecnología en el menor tiempo posible. Pasa a formar parte de la comunidad Ingenios@s de Sistemas y disfruta de contenido exclusivo y aprende sobre sistemas Open Source, Blockchain, SmarContract, Web3, Inteligencia Artificial y Reaidad Virtual, súbete al tren de la Revolución 4.0

Si quieres estar al día y no perderte nada Suscribete al Podcast Ingenios@s de Sistemas, un episodio diario que te mantendrá informado y formado en esta vertiginosa carrera.

Deja un comentario

Share to...