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.
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:
- dominio1.com: Responderá a las solicitudes de dominio1.com y www.domain1.com
- dominio2.net: Responderá a las solicitudes de dominio2.net y www.domain2.net
- 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
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
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.