2011-06-25 20 views
7

Tengo una aplicación PHP que se sirve a través de apache en el puerto 80. Tengo una aplicación nodejs ejecutándose de manera independiente en el puerto 3000. Quiero hacer solicitudes ajax desde el código del lado del cliente generado por PHP a la aplicación nodejs. El problema es que la misma política de origen no permitirá un puerto diferente, y no puedo ejecutar nodejs y apache en el puerto 80.¿Configura apache para alias una aplicación nodejs?

Lo que idealmente me gustaría hacer es hacer que ambos parezcan ejecutarse en el puerto 80 desde la perspectiva del cliente. ¿Cómo puedo configurar apache para reencaminar/alias/lo que sea ciertas solicitudes a la aplicación nodejs?

Espero que tenga sentido. Nota: No estoy seguro de si esto es posible, o si lo estoy haciendo de la manera correcta, abierto a sugerencias.

+0

carga con Apache parece como una manera fácil de crear un cuello de botella. Simplemente use nginx y reenvíe algunas de sus solicitudes a node.js (Alternativamente vuelva a escribir su aplicación PHP en el nodo \ o /) – Raynos

+1

[nodejs y nginx] (http://stackoverflow.com/questions/5009324/node-js- nginx-and-now) – Raynos

+0

Sí, creo que ambos tienen razón. nginx parece ser el camino a seguir, y me encantaría volver a escribir la aplicación en el nodo, ¡pero el tiempo es precioso! – Finbarr

Respuesta

8

Puede hacerlo con el proxy inverso. Agregue mod_proxy y configure una ubicación debajo de su dominio principal en el archivo vhost para enviar un proxy al puerto 3000 en localhost. Básicamente algo como: nodo de equilibrio

<VirtualHost *:80> 
ServerName example.com 
<Location /api> 
    ProxyPass /api http://localhost:3000/ 
    ProxyPassReverse /api http://localhost:3000/ 
</Location> 
</VirtualHost> 
+0

Fui con la solución de Raynos, pero esto también habría funcionado, aunque no tan eficientemente. – Finbarr

+1

me gustaría agregar esto http://blog.ngarua.com/?p=112 la configuración en el enlace permite que apache sirva los archivos estáticos y el servidor nodejs para manejar las solicitudes de aplicaciones reales. – memical

+2

Recibo el error: ProxyPass | ProxyPassMatch no puede tener una ruta cuando se define en una ubicación. ¡Al aplicar lo anterior! – moderns

Cuestiones relacionadas