मैं एक UNIX डोमेन सॉकेट के माध्यम से Node.js HTTP सर्वर से कनेक्ट करने के लिए Nginx सर्वर को कॉन्फ़िगर करने का प्रयास कर रहा हूं।
Nginx कॉन्फ़िगरेशन फ़ाइल:
server {
listen 80;
location / {
proxy_pass http://unix:/tmp/app.socket:/;
}
}
( http://wiki.nginx.org/HttpProxyModule#proxy_pass के अनुसार )
Node.js स्क्रिप्ट:
var http = require('http');
http.createServer(function(req, res) {
console.log('received request');
req.end('received request\n');
}).listen('/tmp/app.socket');
अब, जब मैं फोन करने की कोशिश करता हूं
curl http://localhost/
मैं केवल कर्ल में 502 बैड गेटवे त्रुटि पृष्ठ प्राप्त करता हूं और Node.js प्रक्रिया पर कुछ भी नहीं।
क्या मुझसे कुछ ग़लत हो रहा है?
संपादित करें:
क्वांटा के समाधान की कोशिश करने के बाद, गलती Nginx कॉन्फ़िगरेशन के साथ होनी चाहिए, क्योंकि Node.js प्रक्रिया सॉकेट से कनेक्शन को सही ढंग से स्थापित करती है।
मैंने Nginx को इस तरह से कॉन्फ़िगर करने का भी प्रयास किया:
upstream myapp {
server unix:/tmp/app.socket;
}
server {
listen 80;
location / {
proxy_pass http://myapp;
}
}
लेकिन यह भी काम नहीं किया।
BTW मैं Nginx v1.0.6 का उपयोग कर रहा हूँ।
जब मैं दूसरे कॉन्फ़िगरेशन का उपयोग करता हूं, तो Nginx में त्रुटि लॉग के लिए निम्नलिखित लिखा जा रहा है
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"