Cómo configurar bloques de servidor Nginx en Ubuntu 18.04 / 20.04

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

En este tutorial, aprendemos a configurar bloques de servidor Nginx en Ubuntu 18.04 / 20.04.

Prerrequisitos

Requiere una instancia de Ubuntu 18.04 / 20.04. La instancia debe tener Nginx instalado. Requerir un usuario con sudo acceso.

Paso 1. Cree la estructura del directorio

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

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

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

Creemos el directorio raíz para nuestros dominios:

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

Para propósitos de prueba, crearemos un index.html, archivos style.css y un directorio de imágenes dentro del directorio raíz de documentos del dominio.

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

Abra nuestro editor y cree el archivo de demostración:

/var/www/domain1.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="https://linoxide.com/configure-nginx-server-blocks-ubuntu/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 sudo usuario y los archivos y directorios recién creados son propiedad del root usuario.

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

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

haremos los mismos trámites al domain2.net

Paso 2. Cree archivos de bloque del servidor Nginx para cada dominio

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

De forma predeterminada, Nginx contiene un bloque de servidor llamado dfault que podemos usar como plantilla para nuestras propias configuraciones. Comenzaremos por diseñar el bloque de servidor de nuestro primer dominio, que luego copiaremos para nuestro segundo dominio y realizaremos las modificaciones necesarias.

1) Cree el primer archivo de bloque del servidor Nginx

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

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

Ahora, abra el nuevo archivo que creó en su editor de texto con sudo privilegios:

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

Después de editar el archivo, se verá similar a esto:

/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;

}
}

Eso es todo lo que necesitamos para una configuración básica. Save y close el archivo para salir Ctrl + x.

2) Cree el segundo archivo de bloque del servidor Nginx

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

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

Abra el nuevo archivo con sudo privilegios en su editor:

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

Ajuste la directiva raíz para que apunte al documento de nuestro segundo dominio root y ajustar el server_name para que coincida con el nombre de dominio de su segundo sitio (asegúrese de incluir cualquier alias).

Cuando haya terminado, nuestro archivo probablemente se verá así:

/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;

}
}

Save y close el archivo para salir Ctrl + x.

Paso 3. Habilite nuestros bloques de servidor Nginx y reinicie Nginx

Ahora que tenemos los archivos de bloqueo de nuestro servidor, debemos habilitarlos. Podemos hacer esto creando enlaces simbólicos desde estos archivos al sites-enabled directorio, que Nginx lee durante el inicio.

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 ahora están en el directorio habilitado, ahora tenemos tres bloques de servidor habilitados:

1. dominio1.com: responderá a las solicitudes de dominio1.com y www.dominio1.com
2. domain2.net: responderá a las solicitudes de domain2.net y www.domain2.net
3. predeterminado: responderá a cualquier solicitud en el puerto 80 que no coincida con los otros dos bloques.

Para evitar un posible problema de memoria del cubo de hash que puede surgir al agregar nombres de servidor adicionales, seguiremos adelante y ajustaremos un valor único dentro de nuestro archivo /etc/nginx/nginx.conf. Abra el archivo ahora:

$ sudo nano /etc/nginx/nginx.conf

Dentro del archivo, busque el server_names_hash_bucket_size directiva. Quitar el # símbolo para descomentar la línea:

/etc/nginx/nginx.conf

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

Save y close el archivo cuando haya terminado.

A continuación, pruebe para asegurarse de que no haya errores de sintaxis en ninguno de nuestros archivos Nginx:

$ sudo nginx -t

Si no se encontraron problemas, reinicie Nginx para habilitar nuestros cambios:

$ sudo systemctl restart nginx

Nginx ahora debería estar sirviendo nuestros dos nombres de dominio.

Paso 4. Verificar accediendo al sitio web

Ahora que estamos todos configurados, debemos probar que nuestros bloques de servidor funcionan correctamente. Podemos hacerlo visitando los dominios en nuestro navegador web:

https://domain1.com

Debería ver una página que se parece a esto:

Si visita su segundo nombre de dominio, debería ver un sitio ligeramente diferente:

https://domain2.net

dominio2

Conclusión

En este tutorial, aprendimos cómo configurar el bloque del servidor Nginx en Ubuntu 18.04 / 20.04. Usando bloques de servidor Nginx, hemos configurado dos dominios para atender solicitudes web.