Sto cercando di configurare un server Nginx per la connessione a un server HTTP Node.js tramite un socket di dominio UNIX.
Il file di configurazione di Nginx:
server {
listen 80;
location / {
proxy_pass http://unix:/tmp/app.socket:/;
}
}
(secondo http://wiki.nginx.org/HttpProxyModule#proxy_pass )
Lo 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');
Ora, quando provo a chiamare
curl http://localhost/
Ottengo solo la pagina di errore 502 Bad Gateway in curl e niente sul processo Node.js.
Sto facendo qualcosa di sbagliato?
modificare:
Dopo aver provato la soluzione di quanta, l'errore deve avere a che fare con la configurazione di Nginx, poiché il processo Node.js stabilisce correttamente la connessione al socket.
Ho anche provato a configurare Nginx in questo modo:
upstream myapp {
server unix:/tmp/app.socket;
}
server {
listen 80;
location / {
proxy_pass http://myapp;
}
}
Ma neanche questo ha funzionato.
A proposito sto usando Nginx v1.0.6.
Quanto segue viene scritto nel log degli errori in Nginx, quando utilizzo la seconda configurazione
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"