Also bin ich ziemlich spät zur Node.js Party. Hauptsächlich, weil mich niemand eingeladen hat ... Danke . Das heißt, ich fange an, es herauszufinden. Ich habe einen klassischen ASP-Hintergrund und es gibt einige Dinge, die ich noch nicht verstanden habe.

Wenn mich jemand in die richtige Richtung weisen kann, wäre das großartig. Danke im Voraus.

Also richte ich einen Server wie gewohnt ein.

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

Dies gibt mir eine schöne Seite bei http://127.0.0.1:1337/. Schön.

Die Site, die ich erstelle, befindet sich unter http://newsite.dev/. Ist es möglich (nicht lachen), den Knotenserver so einzurichten, dass er von einem Unterordner meiner Site ausgeführt wird, sagen wir http://newsite.dev/api/?

Daher können alle Abfragen von clientseitigen Skripten an /api/ und nicht an http://127.0.0.1:1337/ gesendet werden.

BEARBEITEN: Um die Dinge etwas klarer zu machen. Ich verwende derzeit ein benutzerdefiniertes PHP-Framework unter http://newsite.dev/, möchte dies jedoch langfristig einstellen. In der Zwischenzeit müssen sie parallel ausgeführt werden.

BEARBEITEN Zur Verdeutlichung führe ich wieder alles auf meinem OS X aus, also Apache (MAMP) -Installation.

13
jamesmhaley 19 Nov. 2013 im 21:25

3 Antworten

Beste Antwort

Sie haben unzählige Optionen, aber keine davon ermöglicht es Ihnen, Port 80 für Ihre Node-Anwendung auf demselben Server wie Apache + PHP ohne Proxy zu verwenden.

Ihre zwei besten Optionen sind die folgenden:

1) Richten Sie eine neue Subdomain ein - erstellen Sie einen neuen DNS-Eintrag für node.newsite.dev und leiten Sie diese Subdomain an eine völlig andere IP auf einem anderen Server weiter (technisch gesehen können Sie jedoch zwei IPs auf demselben Server einrichten). siehe hier), dann kann der Knoten auf Port 80 auf seinem separaten Server ausgeführt werden

2) Lassen Sie Apache auf Port 80 unter /path/to/apache/publicdir/newsite.dev und Node auf Port 1337 unter /path/to/node/application/newsite.dev ausführen. Anschließend können Sie auf Ihre Apache-Dateien zugreifen unter http://newsite.dev und Ihre Knotenanwendung unter http://newsite.dev:1337

Was auch immer Sie tun, legen Sie Ihre Knotenanwendung nicht in einem Unterverzeichnis ab, das Apache kennt, es sei denn, Sie möchten diese .js-Dateien öffentlich bereitstellen.

BEARBEITEN, UM AUF IHRE BEARBEITUNG ZU ANTWORTEN: Wenn Sie ausschließlich zu Node wechseln und schließlich Apache + PHP deaktivieren möchten, ist es am besten, eine Subdomain zu verwenden. Der Nachteil ist, dass Sie überall vollqualifizierte Links verwenden müssen. Der Vorteil ist, dass Sie, wenn Sie der Meinung sind, dass sich genug von Ihrer Anwendung im Knoten befindet, (#//(www\.)?newsite.dev#, '//apache.newsite.dev') und (#//node.newsite.dev#, '//newsite.dev') suchen / ersetzen können. Wenn Sie Apache vollständig verlassen haben, schließen Sie es einfach.

6
Jason 20 Nov. 2013 im 13:30

Sie möchten ein virtuelles Verzeichnis erstellen, und ja, Sie können Node.js mit PHP einrichten, müssen jedoch ein wenig lesen.

Ein virtuelles Verzeichnis ist eine Website, die sich in einem Ordner wie www.yourwebsite / myotherwebsite befindet

Hier erfahren Sie, wie Sie dies in Apache einrichten.

http://httpd.apache.org/docs/current/vhosts/examples.html

Hier erfahren Sie, wie Sie dies in IIS einrichten.

http://technet.microsoft.com/en-us/library/cc771804(v=ws.10).aspx

Sie müssten dann Node.js mit Apache oder IIS verbinden. Hier finden Sie weitere Anweisungen.

Linux: Wie kann ich virtuelle Verzeichnisse mit Knoten implementieren? .js und express?

Unter Windows

6
Community 23 Mai 2017 im 12:01

Es kann jeweils nur ein Server einen Port überwachen. Sie können Node.js und einen anderen Server nicht am selben Port haben.

Am besten richten Sie einen anderen Hostnamen für Ihren anderen Server ein.

Wenn Sie dies nicht tun können, besteht die Standardmethode darin, Anforderungen von einem Server auf den anderen zu übertragen. Dies ist relativ einfach, aber Sie haben nicht angegeben, welchen Server Sie ausführen, sodass es unmöglich ist, genauer zu sein.

0
Brad 19 Nov. 2013 im 17:59