2011-08-29 10 views
12

Apache e Node.js hanno qualcosa in comune. Più utilizzo Node.js, più mi piace Node.js; allo stesso modo, più utilizzo Apache, più mi piace Node.js.Node.js come contenitore applicazione

Una cosa buona di Apache, però, può fare un sacco di cose attraverso la stessa porta. PHP, Python, Perl, diverse app, percorsi diversi, l'intero magilla. Node.js non lo fa, e non dovrebbe, ma mi piacerebbe fare qualcosa di simile.

Mi piacerebbe dargli un elenco di prefissi URL (o regexps idealmente) e informazioni sufficienti per, se riceve una richiesta corrispondente a un particolare prefisso, passa la richiesta a un'istanza subordinata che esegue uno script specificato (e inizierà una tale istanza se non lo ha già fatto, e chiudendolo quando lo fa sembra prudente). Fondamentalmente, voglio nodejs-proxy e cluster collaborando. Con esso, potrei far funzionare più app sulla stessa macchina attraverso la porta 80.

Questo sembra abbastanza facile e molto utile e stavo per scriverlo da solo quando mi è venuto in mente, "Questo sembra abbastanza facile e molto utile - probabilmente qualcuno l'ha già scritto! " Eventuali suggerimenti?

+6

+1 classico. "Più utilizzo apache, più mi piace node.js" – Raynos

+0

Mongrel2 può essere usato per instradare richieste come vuoi (se ho capito bene) e ci sono collegamenti per Node. Non è però il software Node. – Austin

+0

@ Austin: sembra che funzioni, ma io voglio un modulo Node (un "nodulo"?). Credo che sia possibile costruire un sistema complesso, altamente efficiente interamente da Javascript e vorrei testare questa convinzione. – Malvolio

risposta

7

Node.js non ha alcuna capacità incorporata per instradare richieste a diverse applicazioni, ma framework come questo sono in fase di sviluppo.

Viene in mente Nodejitsu Haibu - gestisce i processi figlio per ciascuna applicazione e utilizza node-http-proxy per instradare le richieste.

+0

Questa risposta verificata deve essere aggiornata. –

+0

@ Miss.Code Sentiti libero! – s4y

1

Si potrebbe dare un'occhiata a http://expressjs.com che descrivo come "sinatra per nodo". Fornisce l'intera routing basato su URL/pattern. È possibile accoppiare questo con https://github.com/visionmedia/express-resource per creare un approccio basato su risorse stile RESTful.

+0

Sei sicuro? Ho esaminato i documenti e sembra che il routing riguardi le funzioni interne, non gli altri nodi, il che è molto molto diverso. – Malvolio

+0

Immagino di essere stato io a interpretare "trasmette la richiesta a un'istanza subordinata" come "instradare la richiesta a un thread in cui è possibile qualsiasi cosa con esso" piuttosto che "se necessario avviare un nuovo processo di nodo per gestire la richiesta ". Ecco dove guarderei dio + nginx + una coda di richieste per il loadbalancing piuttosto che scrivere qualcosa da zero. YMMV. Link pertinente: http://blog.acmarques.com/deploying_node_with_nginx_and_god –

0

A me sembra che stiate cercando un proxy HTTP basato su eventi (in sostituzione di Apache) - a tale riguardo, nginx sembra essere l'attuale re della collina.

+0

Sei sicuro? Non sembra che manterrà i processi figli per soddisfare le richieste dei proxy. – Malvolio

+0

@Malvolio Molte persone usano nginx come * reverse proxy * per distribuire le richieste su istanze node.js separate. – s4y

+0

@Sidnicious - grazie, ma la mia domanda è, sarà * mantenere * (cioè, avviare e se consigliabile, arrestare) quelle istanze node.js. Se così non fosse, dovrò creare un programma node.js che funzionerà, e quel programma potrebbe anche fare il proxy-ing; se * * * [balla felice]. – Malvolio

Problemi correlati