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.
forever
ou pm2
qui l' exécute, puis nginx
seulement proxies à elle?
nginx
erreur dans le journal?