J'essaie de configurer un serveur Nginx pour se connecter à un serveur HTTP Node.js via une socket de domaine UNIX.
Le fichier de configuration Nginx:
server {
listen 80;
location / {
proxy_pass http://unix:/tmp/app.socket:/;
}
}
(selon http://wiki.nginx.org/HttpProxyModule#proxy_pass )
Le script Node.js:
var http = require('http');
http.createServer(function(req, res) {
console.log('received request');
req.end('received request\n');
}).listen('/tmp/app.socket');
Maintenant, quand j'essaie d'appeler
curl http://localhost/
Je reçois uniquement la page d'erreur 502 Bad Gateway en curl et rien sur le processus Node.js.
Est-ce que je fais quelque chose de mal?
Éditer:
Après avoir essayé la solution de quanta, l'erreur doit être liée à la configuration de Nginx, car le processus Node.js établit correctement la connexion au socket.
J'ai également essayé de configurer Nginx de cette façon:
upstream myapp {
server unix:/tmp/app.socket;
}
server {
listen 80;
location / {
proxy_pass http://myapp;
}
}
Mais cela n'a pas fonctionné non plus.
BTW J'utilise Nginx v1.0.6.
Ce qui suit est écrit dans le journal des erreurs dans Nginx, lorsque j'utilise la deuxième configuration
2011/09/28 13:33:47 [crit] 1849#0: *5 connect() to unix:/tmp/app.socket failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "http://unix:/tmp/app.socket:/", host: "localhost:80"