Ich versuche, nginx so zu konfigurieren, dass es proxy_pass
Anfragen an meine Node-Apps sendet. Frage zu StackOverflow hat viele positive Bewertungen erhalten: /programming/5009324/node-js-nginx-and-now und ich verwende die Konfiguration von dort.
(Da es sich jedoch um eine Frage zur Serverkonfiguration handelt, sollte diese auf ServerFault ausgeführt werden.)
Hier ist die Nginx-Konfiguration:
server {
listen 80;
listen [::]:80;
root /var/www/services.stefanow.net/public_html;
index index.html index.htm;
server_name services.stefanow.net;
location / {
try_files $uri $uri/ =404;
}
location /test-express {
proxy_pass http://127.0.0.1:3002;
}
location /test-http {
proxy_pass http://127.0.0.1:3003;
}
}
Verwenden eines einfachen Knotens:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(3003, '127.0.0.1');
console.log('Server running at http://127.0.0.1:3003/');
Es klappt! Überprüfen Sie: http://services.stefanow.net/test-http
Mit express:
var express = require('express');
var app = express(); //
app.get('/', function(req, res) {
res.redirect('/index.html');
});
app.get('/index.html', function(req, res) {
res.send("blah blah index.html");
});
app.listen(3002, "127.0.0.1");
console.log('Server running at http://127.0.0.1:3002/');
Es funktioniert nicht :( Siehe: http://services.stefanow.net/test-express
Ich weiß, dass etwas los ist.
a) test-express läuft NICHT
b) text-express läuft
(und ich kann bestätigen, dass es über die Kommandozeile läuft, während ssh auf dem Server läuft)
root@stefanow:~# service nginx restart
* Restarting nginx nginx [ OK ]
root@stefanow:~# curl localhost:3002
Moved Temporarily. Redirecting to /index.html
root@stefanow:~# curl localhost:3002/index.html
blah blah index.html
Ich habe versucht, Header wie hier beschrieben zu setzen: http://www.nginxtips.com/how-to-setup-nginx-as-proxy-for-nodejs/ (funktioniert immer noch nicht)
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;
Ich habe auch versucht, '127.0.0.1' durch 'localhost' zu ersetzen und umgekehrt
Bitte beraten. Ich bin mir ziemlich sicher, dass ich einige offensichtliche Details vermisse und ich würde gerne mehr erfahren. Vielen Dank.
quelle
nginx
Fehlerprotokoll?forever
oderpm2
der ihnnginx
ausführt , dann nur Proxies dazu?Antworten:
Sie drücken den für die Zustellung konfigurierten Pfad aus
/index.html
, benötigen ihn jedoch/test-express/index.html
. Entweder konfigurieren Sie express als Server,/test-express/index.html
oder Sie lassen nginx/test-exress
von der Proxy-Anfrage abschneiden. Letzteres ist so einfach wie das Hinzufügen von abschließenden Schrägstrichen zulocation
undproxy_pass
.Weitere Informationen finden Sie unter http://nginx.org/r/proxy_pass .
quelle