configurar-nginx-dos-dominios-raspberry-pi

Cómo configurar Nginx para servir dos dominios distintos en Raspberry Pi

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.