Ich versuche, einen Nginx-Server so zu konfigurieren, dass er über einen UNIX-Domain-Socket eine Verbindung zu einem Node.js-HTTP-Server herstellt.
Die Nginx-Konfigurationsdatei:
server {
listen 80;
location / {
proxy_pass http://unix:/tmp/app.socket:/;
}
}
(laut http://wiki.nginx.org/HttpProxyModule#proxy_pass )
Das Skript Node.js:
var http = require('http');
http.createServer(function(req, res) {
console.log('received request');
req.end('received request\n');
}).listen('/tmp/app.socket');
Nun, wenn ich versuche anzurufen
curl http://localhost/
Ich erhalte nur die 502 Bad Gateway-Fehlerseite in Curl und nichts im Node.js-Prozess.
Mache ich etwas falsch?
bearbeiten:
Nachdem Sie die Lösung von quanta ausprobiert haben, muss der Fehler mit der Nginx-Konfiguration zusammenhängen, da der Prozess Node.js die Verbindung zum Socket korrekt herstellt.
Ich habe auch versucht, Nginx so zu konfigurieren:
upstream myapp {
server unix:/tmp/app.socket;
}
server {
listen 80;
location / {
proxy_pass http://myapp;
}
}
Aber das hat auch nicht funktioniert.
Übrigens benutze ich Nginx v1.0.6.
Folgendes wird in das Fehlerprotokoll in Nginx geschrieben, wenn ich die zweite Konfiguration verwende
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"