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 Bad Gateway 오류 페이지 만 얻었으며 Node.js 프로세스에는 아무것도 없습니다.
내가 뭔가 잘못하고 있습니까?
편집하다:
Quanta의 솔루션을 시도한 후에는 Node.js 프로세스가 소켓에 올바르게 연결되기 때문에 실수는 Nginx 구성과 관련이 있어야합니다.
또한 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"