Ich vertrete unabhängige Node Express-Anwendungen über Nginx.
Auf diese Weise können neue Anwendungen einfach bereitgestellt werden, und ich kann auch andere Inhalte auf demselben Server an verschiedenen Standorten ausführen.
Hier finden Sie weitere Details zu meinem Setup mit dem Nginx-Konfigurationsbeispiel:
Stellen Sie mit Nginx mehrere Knotenanwendungen auf einem Webserver in Unterordnern bereit
Mit Node wird es schwierig, wenn Sie Ihre Anwendung von localhost ins Internet verschieben müssen.
Es gibt keinen gemeinsamen Ansatz für die Knotenbereitstellung.
Google kann unzählige Artikel zu diesem Thema finden, aber ich hatte Probleme, die richtige Lösung für das von mir benötigte Setup zu finden.
Grundsätzlich habe ich einen Webserver und möchte, dass Knotenanwendungen in Unterordnern (dh http: // myhost / demo / pet-project / ) bereitgestellt werden, ohne dass Konfigurationsabhängigkeiten zum Anwendungscode eingeführt werden.
Gleichzeitig möchte ich, dass andere Dinge wie Blogs auf demselben Webserver ausgeführt werden.
Klingt einfach, oder? Scheinbar nicht.
In vielen Beispielen im Web werden Knotenanwendungen entweder auf Port 80 ausgeführt oder von Nginx an den Stamm übertragen.
Obwohl beide Ansätze für bestimmte Anwendungsfälle gültig sind, erfüllen sie nicht meine einfachen, aber ein wenig exotischen Kriterien.
Deshalb habe ich meine eigene Nginx-Konfiguration erstellt und hier ist ein Auszug:
upstream pet_project {
server localhost:3000;
}
server {
listen 80;
listen [::]:80;
server_name frontend;
location /demo/pet-project {
alias /opt/demo/pet-project/public/;
try_files $uri $uri/ @pet-project;
}
location @pet-project {
rewrite /demo/pet-project(.*) $1 break;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $proxy_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://pet_project;
proxy_redirect http://pet_project/ /demo/pet-project/;
}
}
An diesem Beispiel können Sie erkennen, dass ich meine Pet Project Node-Anwendung, die auf Port 3000 ausgeführt wird, unter http: // myhost / demo / pet-project einbinde .
Zuerst prüft Nginx, ob es sich bei der angeforderten Ressource um eine statische Datei handelt, die unter / opt / demo / pet-project / public / verfügbar ist, und wenn ja, dient sie als hocheffizient, sodass wir keine redundante Schicht wie Connect benötigen statische Middleware.
Dann werden alle anderen Anforderungen überschrieben und an die Pet Project Node- Anwendung weitergeleitet, sodass die Node-Anwendung nicht wissen muss, wo sie tatsächlich bereitgestellt ist, und daher nur durch Konfiguration an einen beliebigen Ort verschoben werden kann.
proxy_redirect ist ein Muss, um den Location-Header richtig zu behandeln. Dies ist äußerst wichtig, wenn Sie res.redirect () in Ihrer Knotenanwendung verwenden .
Sie können dieses Setup problemlos für mehrere Knotenanwendungen replizieren, die an verschiedenen Ports ausgeführt werden, und weitere Standorthandler für andere Zwecke hinzufügen.