我正在尝试配置Nginx服务器以通过UNIX域套接字连接到Node.js HTTP服务器.
原文链接:https://www.f2er.com/bash/385968.htmlserver { 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"