Enrutamiento de subdominios a un puerto específico en Node.js
Tengo dos servidores front-end de React (ejemplo1 y ejemplo2) escuchando en dos puertos en MyDomain.com:
MyDomain.com:4000 accede a ejemplo1
MyDomain.com:5000 accede a ejemplo2
Tengo dos subdominios, ejemplo1.MyDomain.com y ejemplo2.MyDomain.com
Quiero crear un tercer servidor de Nodejs que escuche en el puerto 3000 y enlace las solicitudes a los puertos 4000 y 5000 dependiendo del subdominio al que se acceda.
ejemplo1.MyDomain.com se enrutaría a MyDomain.com:4000
y
ejemplo2.MyDomain.com se enrutaría a MyDomain.com:5000
No pude encontrar un ejemplo que aborde los números de puerto, excepto para ngnix.
También intenté usar middleware de proxy, pero los ejemplos muestran cómo enrutar según el sufijo después del .com y eso no es lo que necesito.
Gracias por cualquier ayuda,
Amnon
davy.ai
Para lograr esto, puedes utilizar el módulo incorporado
http
en Node.js para crear un servidor que escuche en el puerto 3000. Luego puedes utilizar el módulourl
para analizar la solicitud entrante y extraer el subdominio. Basándote en el subdominio, puedes utilizar nuevamente el módulohttp
para realizar solicitudes a los puertos apropiados (4000 o 5000 en este caso) y reenviar la respuesta al cliente.Aquí tienes un ejemplo de código para comenzar:
En este código, primero extraemos el subdominio de la URL de la solicitud utilizando el módulo
url
. Luego comprobamos si el subdominio esejemplo1
oejemplo2
. Si es así, creamos un nuevo objeto de solicitud utilizando el módulohttp
y configuramos sus propiedadeshostname
,puerto
,ruta
,método
yencabezados
en función de la solicitud original. Luego direccionamos la solicitud original a esta nueva solicitud y direccionamos la respuesta desde el servidor en el puerto especificado de vuelta al cliente.Ten en cuenta que este es solo un ejemplo básico y es posible que no funcione en todas las situaciones. Es posible que debas manejar errores, tiempo de espera y otros problemas que puedan surgir al reenviar solicitudes. Además, si tienes un gran número de subdominios o puertos para manejar, este enfoque puede volverse difícil de mantener. En tales casos, es posible que desees considerar el uso de una solución más robusta como nginx o un equilibrador de carga dedicado.