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.

Deja un comentario


7 comentarios


Alex Ballera · Hace 1 año

Excelente!!! era justo lo que estaba buscando... trabajo full de manera local y con Apache tenía la duda de cómo hacerlo en un VPS y es lo mismo. En cuanto a Apache vs NGINX, tendrás un tuto comparativo??? y de ser NGINX otro sobre ¿cómo instalarlo y configurarlo? Saludos

Carlos · Hace 1 año

Un gusto Mario. soy novato en el manejo y configuración de nginx estoy instentando instalar joomla en el pero no lo he logrado. Si es posible un manual para novatos sobre ello. Muchas gracias

Diego Muñoz Venegas · Hace 1 año

Hola Mario: Podrias ayudarme un poco mas, ya que segui todos tus pasos he incluso habia hecho esto antes y funciono perfecto, pero resulta que ahora estoy intentando subir una pagina y me envia solo a la pagina de bienvenida de Nginx, he probado todo lo que haces y nada. Gracias de antemano

SalahAdDinYusuf · Hace 1 año

Esto aplica necesariamente para configurar phppgadmin con nginx? no quiero instalar nada de apache, nada.

Javier Hernandez · Hace 2 años

Muchas gracias por el aporte.

Agélica Ureña · Hace 2 años

Gracias por el material, espero seguirlos leyendo. Aporto este artículo que acabo de leer https://zarza.com/subdominios-un-vistazo-con-los-expertos/ tiene tambien cosas muy interesantes. Gracias!

Laura Barboza · Hace 2 años

Acabo de leerlo y es bastante bueno, muchas gracias! Me ayudó con un montón de dudas.

Cristhian Molina · Hace 2 años

Muy buen material lo tendre encuenta para cuando contrate mi servidor con digitalOcean