Cómo configurar múltiples dominios y subdominios en Nginx
¡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í:
Para crear más hosts virtuales, tenéis que seguir estos pasos tantas veces como dominios o subdominios queráis crear.