Cómo configurar múltiples dominios y subdominios en Nginx

Cómo onfigurar un servidor Nginx para crear múltiples dominios y subdominios.

Cómo configurar múltiples dominios y subdominios en Nginx
tutorial nginx configurar multiples dominios subdominios geeky theory servidor linux web

¡Hola! Hoy os vengo a enseñaros a configurar un servidor Nginx para crear múltiples dominios y subdominios en él. Este tutorial viene por una pregunta en un comentario. Imaginad que tenéis un servidor en el cual queréis alojar varias páginas y proyectos. Cada página tendrá su dominio y, por supuesto, no vamos a contratar un servidor para cada dominio. El objetivo es configurar lo que se conoce como hosts virtuales en la máquina. La verdad es que es realmente sencillo hacer esto. En Geeky Blogs lo tenemos implementado, ya que tenemos varias páginas alojadas en un mismo servidor.

El método para añadir un dominio es el mismo que para un subdominio, pero para este último habrá que hacer un simple cambio: donde ponga "dominio.com", poned "subdominio.dominio.com".

Paso 1: Instalar Nginx

Por supuesto, debemos tener Nginx instalado. Podéis seguir esta serie de tutoriales sobre cómo configurar un servidor VPS.

Paso 2: Crear un nuevo directorio

El segundo paso para crear un host virtual es añadir una carpeta a nuestro sistema. Si queremos añadir un dominio.com, hacemos lo siguiente:

$ sudo mkdir -p /var/www/dominio.com/public_html

Paso 3: Permisos

Es necesario y muy importante dar los permisos al usuario y grupo correctos. Al tratarse de una aplicación Web, daremos los permisos a www-data:

$ sudo chown -R www-data:www-data /var/www/dominio.com/public_html

Paso 4: Añadir contenido

Tras crear la carpeta, tenemos que añadir el contenido que se vaya a mostrar cuando el usuario navegue en el dominio. Por lo tanto, vamos a crear un sencillo archivo index.html para comprobar si funciona todo:

$ sudo nano /var/www/dominio.com/public_html/index.html

Añadimos ahora cualquier código HTML.

Paso 5: Crear el Host Virtual en Nginx

A continuación vamos a decirle a Nginx que va a tener un nuevo host virtual que gestionar, es decir, que cuando el usuario introduzca en el navegador dominio.com, el servidor tendrá que leer el archivo de configuración que crearemos para saber qué hacer. En Nginx hay dos rutas importantes. La primera de ellas es sites-available, que contiene los archivos de configuración de los hosts virtuales disponibles en el servidor. La otra es sites-enabled, que contiene los archivos de configuración de los sitios habilitados, es decir, los que funcionan en ese momento. Vamos a crear un archivo para dominio.com:

$ sudo nano /etc/nginx/sites-available/dominio.com

Introducimos el siguiente contenido:

server { ## Escucha en el puerto 80 (HTTP) listen   80; ## Raíz donde se encuentra la página Web root /var/www/dominio.com/public_html; ## Orden de prioridad de los archivos index index index.html index.htm; server_name dominio.com; }

A pesar de haber creado este archivo, todavía no podemos acceder a nuestra página Web, ya que la configuración está en sites-available, pero no en sites-enabled. Para habilitar el host virtual crearemos un enlace simbólico entre ambas carpetas:

$ sudo ln -s /etc/nginx/sites-available/dominio.com /etc/nginx/sites-enabled/dominio.com

Paso 6: Reiniciar Nginx

A menos que reiniciemos Nginx, los cambios no se aplicarán:

$ sudo service nginx restart

Paso 7: Configurar los DNS

Finalmente tendremos que configurar los registros DNS. Como mi servdor está alojado en DigitalOcean, utilizaré su panel. Para añadir un subdominio, creamos un registro CNAME con el nombre del subdominio y que apunte a la máquina. Algo así:

registro dns cname a subdominio dominio nginx geeky theory tutorial

Para crear más hosts virtuales, tenéis que seguir estos pasos tantas veces como dominios o subdominios queráis crear.