En esta ocasión vamos a a configurar un servidor Nginx para crear múltiples dominios en el mismo HOST y subdominios en él. 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.
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 «midominio.com», poned «subdominio.dominio.com».
Paso 1: Instalar Nginx
sudo sudo apt update
sudo apt install nginx
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 midominio.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 midominio.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
también podemos activar al inicio nginx se ejecute en caso de reiniciar el servidor.
$ sudo service nginx enable
Paso 7: Configurar los DNS
Finalmente tendremos que configurar los registros DNS apunten a tu servidor. En mi caso al utilizar freedns redirecciono mi noip hacia el servidor local que utilzo.
Fuente: https://geekytheory.com/como-configurar-multiples-dominios-y-subdominios-en-nginx