Si encuentras algún detalle que no entiendes nos puedes dejar un comentario y trataremos de ayudarte lo mas rápido que podamos.
Solución:
En cuanto a su otra pregunta, que se marcó como duplicada de esta, tiene información adicional allí que probablemente lo ayudará a aclarar lo que necesita. En concreto, mencionas lo siguiente:
Quiero alojar múltiples servidores http con NodeJS, que todos obtengan y enviar http peticiones. Al mismo tiempo, quiero ejecutar Apache, que ocupa el puerto 80. Si deshabilito Apache y dejo que NodeJS se ejecute en el puerto 80, funcionará, pero no puedo ejecutarlos al mismo tiempo.
Este script se ejecutará y recibirá solicitudes localmente en el puerto 8081, pero parece que no puedo enviarle una solicitud AJAX a través de Internet, incluso después de reenviar el puerto con mi enrutador:
Creo que @ankit-agarwal probablemente tenga razón en que necesita una configuración de proxy inverso para reenviar el tráfico a sus diferentes backends. Suponiendo que tiene una dirección IP externa, debería poder acceder a cada uno de sus backends utilizando los puertos en los que están escuchando. Por ejemplo, si la dirección IP pública expuesta de su máquina es 100.120.110.43:
+---------+------+-------------------------------------+
| Backend | Port | Web Address |
+=========+======+=====================================+
| Apache | 80 | 100.120.110.43 or 100.120.110.43:80 |
| Node1 | 8080 | 100.120.110.43:8080 |
| Node2 | 8081 | 100.120.110.43:8081 |
+---------+------+-------------------------------------+
Si desea acceder a cada uno de los backends sin especificar el puerto, debe tener alguna forma de decirle a su red interna qué backend atender en función de la solicitud. Una forma de hacer esto es usar el enrutamiento basado en rutas, donde configura su proxy inverso para enrutar el tráfico a los diferentes backends según la ruta en la URL. No publicó su configuración de Apache, pero puede usar su servidor Apache actual para manejar esto usando las directivas ProxyPass y ProxyPassReverse similares a las siguientes:
ProxyPass "/node1" "http://100.120.110.43:8080/"
ProxyPassReverse "/node1" "http://100.120.110.43:8080/"
ProxyPass "/node2" "http://100.120.110.43:8081/"
ProxyPassReverse "/node2" "http://100.120.110.43:8081/"
Lo bueno de usar un proxy inverso es que no tiene que exponer los backends de su nodo al público. Supongamos que no lo ha hecho y que solo se puede acceder a ellos desde la red interna en el puerto 0.0.0.0:.
Listen 80
DocumentRoot /www/apache
ServerName www.apachefrontend.com
ProxyRequests off
ProxyPass /node1 http://0.0.0.0:8080/
ProxyPassReverse /node1 http://0.0.0.0:8080/
ProxyPass /node2 http://0.0.0.0:8081/
ProxyPassReverse /node2 http://0.0.0.0:8081/
También puede señalar diferentes hosts/ips a los que solo usted tiene acceso.
Finalmente, también puede usar VirtualHost y ServerName si tiene diferentes registros DNS para apuntar a los diferentes backends.
Listen 80
DocumentRoot /www/apache
ServerName www.apachefrontend.com
ServerName www.nodebackend1.com
ProxyRequests off
Order deny,allow
Allow from all
ProxyPass / http://0.0.0.0:8080/
ProxyPassReverse / http://0.0.0.0:8080/
ServerName www.nodebackend2.com
ProxyRequests off
Order deny,allow
Allow from all
ProxyPass / http://0.0.0.0:8081/
ProxyPassReverse / http://0.0.0.0:8081/
Para que cualquiera de los anteriores funcione, debe tener mod_proxy
y mod_proxy_http
habilitado en apache.
Estos probablemente no sean los ejemplos más sólidos y no los he probado, pero deberían demostrar la idea. Puedes aprender más aqui.
Reseñas y valoraciones
Tienes la opción de añadir valor a nuestra información colaborando tu veteranía en las explicaciones.