Un bloque de servidor es una directiva Nginx que define la configuración de un dominio específico, lo que le permite ejecutar más de un sitio web en un solo servidor. Para cada sitio web, puede configurar la raíz del documento del sitio (el directorio que contiene los archivos del sitio web), crear una política de seguridad separada, usar diferentes certificados SSL y mucho más.
Este artículo explica cómo configurar bloques de servidor Nginx en Debian 10.
Tabla de contenidos
Prerrequisitos
Asegúrate de cumplir con los siguientes requisitos previos:
- Nombre de dominio que apunta a la IP de su servidor público.
- Nginx instalado en su sistema Debian.
- Iniciar sesión como usuario root o usuario con privilegios de sudo.
En alguna documentación, el término Server Blocks
se denomina a Virtual host
un host virtual es un término de Apache.
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. La raíz del documento puede ser cualquier directorio en el servidor.
En este articulo usaremos la siguiente estructura de directorios:
/var/www/
├── domain1.com
│ └── public_html
├── domain2.com
│ └── public_html
├── domain3.com
│ └── public_html
Básicamente, crearemos un directorio separado para cada dominio que queramos alojar en nuestro servidor dentro del directorio/var/www
. Dentro de cada uno de estos directorios, crearemos un directorio public_html
que almacenará los archivos del sitio web del dominio.
Ejecutaremos el siguiente comando para crear el directorio raíz para el dominio example.com
:
mkdir -p /var/www/example.com/public_html
A continuación, creamos un archivo index.html
dentro del directorio raíz de documentos del dominio:
nano /var/www/example.com/public_html/index.html
Abrimos el archivo y pegamos las siguientes líneas:
/var/www/example.com/public_html/index.html
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Welcome to example.com</title>
</head>
<body>
<h1>Success! example.com home page!</h1>
</body>
</html>
Para evitar problemas de permisos, cambiamos la propiedad del directorio raíz del documento de dominio al usuario de Nginx (www-dat
):
chown -R www-data: /var/www/example.com
Crear un bloque de servidor
Por defecto, en los sistemas Debian, los archivos de configuración de bloques de servidor Nginx se almacenan en el directorio/etc/nginx/sites-available
. Para activar una configuración, debemos vincular el archivo al directorio/etc/nginx/sites-enabled/
.
Abra su editor de texto y cree el siguiente archivo de bloqueo del servidor:
nano /etc/nginx/sites-available/example.com.conf
server {
listen 80;
listen [::]:80;
root /var/www/example.com/public_html;
index index.html;
server_name example.com www.example.com;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location / {
try_files $uri $uri/ =404;
}
}
El archivo de configuración se puede nombrar como desees, pero por lo general, es mejor usar el nombre de dominio.
Habilitamos el nuevo archivo de bloqueo del servidor creando un enlace simbólico del archivo al directorio sites-enabled
de la siguiente forma:
ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
Comprobamos que la sintaxis te nginx es correcta con el siguiente comando:
nginx -t
Si no hay errores, la salida se verá así:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Ahora reiniciamos para que todos los cambios surtan efecto:
/etc/init.d/nginx restart
Para verificar que el bloqueo del servidor funciona como se esperaba, abrimos http://example.com
en su navegador y podremos ver el siguiente mensaje:
Conclusión
He mostrado cómo crear bloques de servidor Nginx y alojar múltiples dominios en un solo servidor Debian. Para crear un bloque de servidor para otro dominio, repite los mismos pasos.
Si deseas proteger su sitio web con un certificado SSL, puede generar e instalar un certificado SSL Letsencrypt gratuito.