Nginx es un servidor web de alto rendimiento que se utiliza para servir contenido estático y dinámico en la web.
En una Raspberry Pi, Nginx puede ser una excelente opción para manejar varios dominios y aplicaciones web desde un solo servidor.
En este tutorial, aprenderemos a configurar Nginx para servir dos dominios distintos en nuestra Raspberry Pi.
Prerequisitos
Primero, debemos asegurarnos de que nuestra Raspberry Pi esté actualizada,
sudo apt update
sudo apt upgrade
Además, entendemos que tenemos Nginx instalado y funcionando correctamente,
sudo apt install nginx
Además deberás tener dos dominios apuntando a la dirección IP pública de tu Raspberry Pi. Para ello, deberás tener los registros DNS de cada dominio correctamente configurado.
Esto puede variar según el proveedor de dominios, pero normalmente encontrarás opciones para gestionar los registros DNS en el panel de administración de tu dominio
Crear los archivos de host virtual
Vamos a servir dos páginas web diferentes, para dos dominios. Para este ejemplo vamos a asumir que se llaman,
- Dominio1.com
- Dominio2.com
Lógicamente, en vuestro caso, tendréis que sustituir dominio1.com
y dominio2.com
por los dominios que hayáis contratado.
Antes de configurar Nginx, vamos a crear unos cuantos ficheros de ejemplo, que serviremos desde cada dominio.
Para eso, primero creamos directorios para los archivos de los sitios web
sudo mkdir -p /var/www/dominio1.com/html
sudo mkdir -p /var/www/dominio2.com/html
Además, asignamos permisos adecuados a los directorios para el usuario www-data
.
sudo chown -R www-data:www-data /var/www/dominio1.com/html
sudo chown -R www-data:www-data /var/www/dominio2.com/html
www-data
es el nombre del usuario por defecto creado por Nginx. En algunas versiones este usuario es Nginx
Finalmente, creamos unos archivos de prueba para cada dominio.
echo '<html><body><h1>Bienvenido a dominio1.com</h1></body></html>' | sudo tee /var/www/dominio1.com/html/index.html
echo '<html><body><h1>Bienvenido a dominio2.com</h1></body></html>' | sudo tee /var/www/dominio2.com/html/index.html
Ya tenemos suficiente para hacer las pruebas (en vuestro proyecto, podéis poner las web reales que queráis servir)
Configurar los bloques de servidor en Nginx
Nginx utiliza archivos de configuración para definir cómo manejar cada dominio o aplicaciones. Estos archivos se denominan bloques de servidor o “server blocks”.
Al resolver las peticiones,
- Nginx utiliza los datos de la petición para obtener la dirección que se solicita
- Comprueba los server blocks definidos
- Si uno cumple la petición, ejecuta ese server block
Así que vamos a crear un archivo de configuración para cada dominio en el directorio de configuración de Nginx.
Configurar el primer dominio:
sudo nano /etc/nginx/sites-available/dominio1.com
Añadimos la siguiente configuración:
server {
listen 80;
server_name dominio1.com www.dominio1.com;
root /var/www/dominio1.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Configurar el segundo dominio:
sudo nano /etc/nginx/sites-available/dominio2.com
Añadimos la siguiente configuración:
server {
listen 80;
server_name dominio2.com www.dominio2.com;
root /var/www/dominio2.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Es decir, el mismo fichero. Simplemente en uno hemos puesto dominio1
y en otro dominio2
.
En ambos casos, estamos asociando un dominio a una carpeta desde la que servirá los ficheros (que hemos creado en el apartado anterior)
Habilitar los sitios y reiniciar Nginx
Ahora, creamos enlaces simbólicos para activar los archivos de configuración en el directorio sites-enabled
.
sudo ln -s /etc/nginx/sites-available/dominio1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/dominio2.com /etc/nginx/sites-enabled/
Finalmente reiniciamos Nginx para aplicar la nueva configuración
sudo systemctl restart nginx
La forma de trabajar con enlaces simbólicos en Nginx es una convención. Podríamos emplear ficheros de texto directamente. Pero los enlaces simplifican la gestión y mantenimiento.
Verificar la configuración
Ahora nos queda verificar que podemos acceder a los dominios correctamente. Para ello, abre tu navegador y visita http://dominio1.com
y http://dominio2.com
.
Deberías ver las páginas de bienvenida que configuramos previamente para cada dominio (que muestran bienvenido a Dominio1 o Dominio2, respectivamente)
Ahora puedes modificar los ficheros servidos para cada dominio, o aplicar configuraciones especificar para cada servidor virtual.