Nginx arbeitet als Front-End-Server, der in diesem Fall die Anfragen an einen node.js-Server weiterleitet. Daher müssen Sie eine Nginx-Konfigurationsdatei für Node einrichten.
So habe ich es in meinem Ubuntu-System gemacht:
Erstellen Sie die Datei yourdomain.example
unter /etc/nginx/sites-available/
:
vim /etc/nginx/sites-available/yourdomain.example
Darin sollte etwas stehen wie:
# the IP(s) on which your node server is running. I chose port 3000.
upstream app_yourdomain {
server 127.0.0.1:3000;
keepalive 8;
}
# the nginx server instance
server {
listen 80;
listen [::]:80;
server_name yourdomain.example www.yourdomain.example;
access_log /var/log/nginx/yourdomain.example.log;
# pass the request to the node.js server with the correct headers
# and much more can be added, see nginx config options
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://app_yourdomain/;
proxy_redirect off;
}
}
Wenn Sie möchten, dass Nginx (>= 1.3.13) auch Websocket-Anfragen bearbeitet, fügen Sie die folgenden Zeilen in der Datei location /
Abschnitt:
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
Sobald Sie dies eingerichtet haben, müssen Sie die in der obigen Konfigurationsdatei definierte Site aktivieren:
cd /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/yourdomain.example yourdomain.example
Erstellen Sie Ihre Node-Server-App unter /var/www/yourdomain/app.js
und führen Sie es unter localhost:3000
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(3000, "127.0.0.1");
console.log('Server running at http://127.0.0.1:3000/');
Prüfung auf Syntaxfehler:
nginx -t
Starten Sie Nginx neu:
sudo /etc/init.d/nginx restart
Starten Sie abschließend den Node-Server:
cd /var/www/yourdomain/ && node app.js
Jetzt sollten Sie "Hello World" unter yourdomain.example
Ein letzter Hinweis zum Starten des Node-Servers: Sie sollten eine Art Überwachungssystem für den Node-Daemon verwenden. Es gibt ein großartiges Tutorial zu Node mit Upstart und Monit .