En Nginx, bloqueos 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 de dominio específica, como la raíz del documento, SSL, puerto y más. Los bloques del servidor Nginx son similares a los hosts virtuales de Apache.
En este tutorial, aprendemos cómo configurar bloques de servidor Nginx en Ubuntu 18.04/20.04 .
Requisitos previos
Requiere una instancia de Ubuntu 18.04/20.04. La instancia debe tener Nginx instalado. Requiere un usuario con acceso sudo.
Paso 1. Crear 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 directorios:
/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 de /var/www
directorio.
Vamos a crear el directorio raíz para nuestros dominios:
$ sudo mkdir -p /var/www/domain1.com
Con fines de prueba, crearemos un directorio index.html, archivos 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 sudo
usuario y los archivos y directorios recién creados son propiedad de 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 procedimientos para el domain2.net
Paso 2. Crear archivos de bloque de servidor 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.
De forma predeterminada, Nginx contiene un bloque de servidor llamado dfault
que podemos usar 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 de bloqueo del servidor copiando el archivo predeterminado:
$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/domain1.com
Ahora, abre el nuevo archivo que creaste en tu editor de texto con privilegios sudo:
$ sudo nano /etc/nginx/sites-available/domain1.com
Después de editar el archivo, se verá similar a esto:
/etc/nginx/sites-available/domain1.comserver { 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. Guarde y cierre el archivo para salir Ctrl
+ x
.
2) Crear 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 tu 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 ajuste 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.netserver { 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; } }
Guarde y cierre el archivo para salir Ctrl
+ x
.
Paso 3. Habilite nuestros bloques de servidor Nginx y reinicie Nginx
Ahora que tenemos nuestros archivos de bloqueo del servidor, debemos habilitarlos. Podemos hacer esto creando enlaces simbólicos desde estos archivos a los sites-enabled
directorio, del cual 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. dominio2.net:Responderá a las solicitudes de dominio2.net y www.dominio2.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 depósito hash que puede surgir al agregar nombres de servidor adicionales, seguiremos adelante y ajustaremos un solo valor 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. Eliminar el #
símbolo para descomentar la línea:
http { . . . server_names_hash_bucket_size 64; . . . }
Guarde y cierre 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 a 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:
http://domain1.com
Debería ver una página similar a esta:
Si visita su segundo nombre de dominio, debería ver un sitio ligeramente diferente:
http://domain2.net
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.