J'essaie de configurer nginx pour qu'il proxy_pass
demande à mes applications de nœud. La question sur StackOverflow a suscité de nombreux votes positifs: /programming/5009324/node-js-nginx-and-now et j'utilise la configuration à partir de là.
(mais comme la question concerne la configuration du serveur, elle est censée être sur ServerFault)
Voici la configuration nginx:
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;
}
}
En utilisant un nœud simple:
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/');
Ça marche! Vérifiez: http://services.stefanow.net/test-http
Utilisation 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/');
Cela ne fonctionne pas :( Voir: http://services.stefanow.net/test-express
Je sais que quelque chose se passe.
a) test-express n'est PAS en cours d'exécution
b) text-express est en cours d'exécution
(et je peux confirmer qu'il fonctionne via la ligne de commande pendant que ssh sur le serveur)
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
J'ai essayé de définir des en-têtes comme décrit ici: http://www.nginxtips.com/how-to-setup-nginx-as-proxy-for-nodejs/ (ne fonctionne toujours pas)
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;
J'ai également essayé de remplacer '127.0.0.1' par 'localhost' et vice versa
S'il vous plaît donnez votre avis. Je suis sûr que certains détails évidents me manquent et j'aimerais en savoir plus. Je vous remercie.
la source
nginx
erreur dans le journal?forever
oupm2
qui l' exécute, puisnginx
seulement proxies à elle?Réponses:
Vous exprimez configuré pour servir le chemin
/index.html
, mais vous avez besoin/test-express/index.html
. Soit configurez express pour servir/test-express/index.html
ou faites nginx pour retirer/test-exress
de la requête mandatée. Latter est aussi simple que d'ajouter des barres obliques de fin àlocation
etproxy_pass
.Voir http://nginx.org/r/proxy_pass pour plus de détails.
la source