¿Tienes un servidor con una única dirección IP pública, pero necesitas alojar varios dominios o subdominios? ¿Qué harías? Este escenario puede resultar confuso si eres principiante. Pero no te preocupes, este tutorial te tiene cubierto, para que puedas servir un subdominio NGINX y varios dominios.
En este tutorial, aprenderás cómo servir eficientemente subdominios de NGINX o múltiples dominios en un servidor con una única dirección IP.
Si estás listo, ¡es hora de empezar!
Prerrequisitos
Este tutorial incluye demostraciones prácticas, pero no requiere muchos prerrequisitos y asumirá que tienes un Ubuntu Server LTS con el SSH habilitado e NGINX instalado. Las demostraciones en este tutorial están basadas en Ubuntu Server LTS 20.04.1.
Configuración de los registros DNS
Antes de poder servir subdominios de NGINX o múltiples dominios, deberás agregar un registro A en un panel de control DNS. El registro A vincula y apunta todos los dominios y subdominios a una única dirección IP para permitir que los navegadores web encuentren tu sitio web.
1. Abre tu navegador web favorito e inicia sesión en tu panel de control de DNS.
2. Haz clic en Agregar Registro para comenzar a agregar registros A. Tu navegador se redirigirá a una página donde configurarás la configuración de DNS para tu dominio y subdominios.

Ahora configura la configuración de DNS con lo siguiente:
Selecciona Registro A en el campo Tipo.
Ingresa @ en el campo Host y la IP de tu servidor en el campo Valor.
Selecciona el valor deseado en el campo TTL, luego haz clic en el botón Confirmar para guardar la configuración.
Repite el mismo proceso para otros subdominios.

La página final de Configuración de DNS se verá como la siguiente.

Tu panel de control de registros DNS puede variar en funcionalidad y diseño, pero los mismos principios se aplicarán a todos.
Configuración de directorios web para dominios y subdominios NGINX
Ahora que has agregado registros A para tu dominio y subdominios, es hora de configurar sus directorios web. NGINX viene con un archivo de host virtual predeterminado y está configurado para servir un directorio web ubicado en /usr/share/nginx/html.
Crearás un directorio web separado para cada dominio dentro de la raíz de documentos predeterminada de NGINX (/var/www/html).
1. Primero, abre tu terminal y ejecuta los comandos a continuación para crear directorios web para todos los dominios y subdominios. De esta manera, se separan, organizan e aislan los archivos para cada sitio web.
2. A continuación, ejecuta el comando chown
de forma recursiva (-R
) para cambiar la propiedad de cada directorio creado en el paso uno al usuario y grupo www-data
. Cambias la propiedad de cada directorio al usuario y grupo www-data
ya que NGINX se ejecuta como usuario www-data
.
3. Crea un archivo llamado index.html en tu editor de código preferido y luego copia/pega el código a continuación en el archivo index.html. Guarda el archivo dentro del directorio web principal de tus dominios (/var/www/html/awstutorial.net).
El código HTML a continuación muestra un mensaje que dice “¡Felicidades! ¡El sitio web awstutorial.net está funcionando!” cuando el archivo index.html se abre en un navegador web.
4. Finalmente, crea el mismo index.html en los directorios /var/www/html/web1.awstutorial.net y /var/www/html/web2.awstutorial.net. Pero reemplaza awstutorial.net
con web1.awstutorial.net
y web2.awstutorial.net
en el código de cada index.html según corresponda.
Configuración de un Host Virtual para el Dominio y Subdominios de NGINX
Ya tienes una página index.html para que tu dominio y subdominios se sirvan a través de un servidor web NGINX. El siguiente paso es crear un archivo de configuración de host virtual NGINX para cada dominio y servir las páginas HTML.
1. Crea un archivo de configuración de host virtual de NGINX llamado awstutorial.net en tu editor de código preferido, y luego copia/pega el código a continuación en ese archivo. Guarda el archivo en el directorio /etc/nginx/sites-available/.
El código a continuación controla el comportamiento de tu servidor, como el nombre del servidor y la página de inicio (índice) cuando un usuario intenta acceder a tu dominio.
2. A continuación, ejecuta el siguiente comando nginx
para verificar (-t
) el archivo de configuración de NGINX en busca de cualquier error de sintaxis.
Si no se encuentra ningún error de sintaxis en el archivo de configuración de NGINX, obtendrás la siguiente salida.

3. A continuación, ejecuta el siguiente comando para crear un enlace simbólico (ln -s
) desde el directorio /etc/nginx/sites-available hasta el directorio /etc/nginx/sites-enabled/. Este comando habilita el archivo de configuración del host virtual awstutorial.net.
Los formatos sites-available y sites-enabled son estándar en una instalación de NGINX en Ubuntu, pero otras distribuciones pueden utilizar un estándar diferente.
4. Repite los pasos del uno al tres para crear archivos de configuración de host virtual de NGINX llamados web1.awstutorial.net y web2.awstutorial.net.
Cambia las siguientes líneas en cada archivo de configuración de host virtual de NGINX:
- Reemplaza la línea
root /var/www/html/awstutorial.net
con el directorio raíz de cada subdominio (root /var/www/html/web1.awstutorial.net
yroot /var/www/html/web2.awstutorial.net
). - Reemplaza la línea
server_name awstutorial.net
con el nombre de cada subdominio (server_name web1.awstutorial.net
yserver_name web2.awstutorial.net
).
5. Ahora ejecuta los comandos sudo ln
a continuación, como lo hiciste en el paso tres, para habilitar los archivos de configuración del host virtual.
6. Ejecuta el siguiente comando systemctl
para reiniciar el servicio NGINX (restart nginx
) y aplicar todos los cambios de configuración.
7. Finalmente, navega a las URL del dominio y subdominios en tu navegador para comprobar si los sitios web funcionan correctamente.
Si el dominio y los subdominios se cargan correctamente, verás un mensaje como el siguiente.

Configuración de HTTPS en el Dominio y Subdominio de NGINX
Has configurado y probado correctamente un dominio y subdominios de NGINX en el protocolo HTTP, lo cual es excelente. Pero debes asegurar la conexión de tu dominio y subdominios habilitando HTTPS. ¿Cómo? Con un certificado que obtendrás de una Autoridad de Certificación como Let’s Encrypt SSL.
1. Primero, ejecuta el siguiente comando para instalar el paquete de software Certbot (apt-get install certbot
). Certbot te permite descargar un certificado SSL para tu dominio y subdominios.
2. A continuación, ejecuta el comando certbot
que se muestra a continuación para descargar un certificado SSL (certonly
) para tu dominio (-d awstutorial.net
). Ten en cuenta que aceptas los términos del servicio (--agree-tos
) con tu dirección de correo electrónico (--email
).
Reemplaza el correo electrónico con el tuyo.
3. Ingresa ‘1’ para seleccionar el plugin del Servidor Web NGINX (nginx) para autenticarte con el ACME CA, como se muestra a continuación.

Después de seleccionar el plugin del Servidor Web NGINX, verás el progreso de la descarga del certificado SSL para tu dominio (awstutorial.net).
Por defecto, los certificados SSL de Let’s Encrypt se almacenan en el directorio /etc/letsencrypt/live/.

4. Ahora ejecuta cada comando a continuación como lo hiciste en el paso dos para descargar los certificados SSL para los subdominios restantes (web1.awstutorial.net
y web2.awstutorial.net
).
5. Por último, ejecuta el comando ls
a continuación para listar todos los certificados SSL en el directorio /etc/letsencrypt/live/ que contienen (*
) el awstutorial.net
en sus nombres. Haciéndolo así, podrás verificar que los certificados SSL existen.
A continuación, verás los certificados SSL para tu dominio y subdominios.

Configurando el Host Virtual de NGINX para Usar Certificados SSL
En este punto, ya tienes certificados SSL a tu disposición. ¿Pero cómo los utilizas para asegurar tu dominio y subdominios? Definirás la ruta de los certificados en el bloque server
de cada archivo de configuración del host virtual NGINX.
1. Abre el archivo de configuración del host virtual NGINX de awstutorial.net que se encuentra en el directorio /etc/nginx/sites-available/
en tu editor de código preferido.
2. Reemplaza el contenido del archivo con el siguiente código, donde defines la ruta del certificado SSL de tu dominio y el protocolo SSL (bajo Ruta del certificado SSL
).
3. Repita el mismo proceso (pasos uno a dos) para los archivos de configuración de host virtual restantes (web1.awstutorial.net y web2.awstutorial.net). Pero asegúrese de reemplazar la ruta del certificado SSL con la ruta del certificado de su subdominio (bajo Ruta del certificado SSL
).
4. Ahora vuelva a ejecutar el comando systemctl
a continuación para reiniciar el servicio NGINX y aplicar los cambios de configuración.
5. Finalmente, navegue a las URL de su dominio y subdominio en su navegador web. Pero esta vez, en lugar del protocolo HTTP, use HTTPS para ver si funcionan.
A continuación, puede ver un icono de candado en la barra de direcciones, que indica que el sitio web está seguro con su certificado SSL.

Conclusión
En este tutorial, ha aprendido cómo servir un subdominio NGINX o varios dominios configurando un archivo de configuración de host virtual. También ha abordado la seguridad de sus dominios con un certificado SSL que también define en el archivo de configuración de host virtual.
Ahora, ¿por qué no utilizar esta configuración en un entorno de producción, como para alojar varias aplicaciones en un solo servidor y proporcionar alojamiento web asequible?