我正在尝试配置Nginx服务器以通过UNIX域套接字连接到Node.js HTTP服务器。
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/
我在curl中只得到502 Bad Gateway错误页面,而在Node.js进程上什么也没有。
难道我做错了什么?
编辑:
在尝试了Quanta的解决方案之后,该错误必定与Nginx配置有关,因为Node.js进程正确建立了与套接字的连接。
我还尝试通过这种方式配置Nginx:
upstream myapp {
server unix:/tmp/app.socket;
}
server {
listen 80;
location / {
proxy_pass http://myapp;
}
}
但这也不起作用。
顺便说一句,我正在使用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"