Cómo hacer un subdominio con DNS y Nginx

Voy a describir una forma sencilla y rápida de crear subdominios con Nginx y DNS, puede ser útil si trabajas con NodeJS. A continuación contamos con los siguientes datos de ejemplo:

  • Subdominio beta
  • Dominio ejemplo.com
  • IP 123.456.789.123
  • Puerto de la app 5000

Subdominio: parte de Nginx

En el archivo de configuración de Nginx, que suele ser /etc/nginx/nginx.conf (aunque según tu configuración puede haber más en /sites-availables), hay que añadir el bloque server que vaya a responder en el nuevo subdominio.

server { 
  listen 123.456.789.123:80; 
  server_name beta.ejemplo.com; 
  location / { 
    proxy_pass http://123.456.789.123:5000; 
    proxy_set_header Host $http_host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-NginX-Proxy true; proxy_redirect off;   
  } 
}

Por supuesto, puedes añadir más parámetros de configuración. Consulta la documentación.

Por último, para aplicar los cambios reiniciamos:

service nginx restart

Subdominio: parte DNS

En el panel de control de tu proveedor del dominio, añade este registro con los siguientes valores:

  • Host: beta
  • Record: CNAME
  • Value: ejemplo.com

Prueba

¡Subdominio hecho! Ahora si entraras a beta.ejemplo.com debería responder la aplicación. Ten en cuenta que podría demorase un tiempo en propagarse los DNS (minutos o alguna hora en caso excepcional).