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/
curlで502 Bad Gatewayエラーページのみが表示され、Node.jsプロセスでは何も表示されません。
私は何か間違っていますか?
編集:
Quantaのソリューションを試した後、Node.jsプロセスがソケットへの接続を正しく確立するため、間違いはNginxの設定に関係する必要があります。
私もこの方法でNginxを設定しようとしました:
upstream myapp {
server unix:/tmp/app.socket;
}
server {
listen 80;
location / {
proxy_pass http://myapp;
}
}
しかし、これも機能しませんでした。
ところで私はNginx v1.0.6を使用しています。
2番目の構成を使用すると、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"