Bir UNIX etki alanı soketi aracılığıyla bir Node.js HTTP sunucusuna bağlanmak için bir Nginx sunucusu yapılandırmaya çalışıyorum.
Nginx yapılandırma dosyası:
server {
listen 80;
location / {
proxy_pass http://unix:/tmp/app.socket:/;
}
}
( http://wiki.nginx.org/HttpProxyModule#proxy_pass uyarınca )
Node.js betiği:
var http = require('http');
http.createServer(function(req, res) {
console.log('received request');
req.end('received request\n');
}).listen('/tmp/app.socket');
Şimdi aramaya çalıştığımda
curl http://localhost/
Ben sadece curl 502 Bozuk Ağ Geçidi hata sayfasını alıyorum ve Node.js işleminde hiçbir şey.
Yanlış bir şey mi yapıyorum?
Düzenle:
Quanta'nın çözümünü denedikten sonra, Node.js işlemi sokete bağlantıyı doğru şekilde kurduğundan, hatanın Nginx yapılandırmasıyla ilgili olması gerekir.
Ayrıca Nginx'i şu şekilde yapılandırmaya çalıştım:
upstream myapp {
server unix:/tmp/app.socket;
}
server {
listen 80;
location / {
proxy_pass http://myapp;
}
}
Ama bu da işe yaramadı.
BTW Nginx v1.0.6 kullanıyorum.
İkinci yapılandırmayı kullandığımda, Nginx hata günlüğüne aşağıdakiler yazılıyor
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"