如何通过UNIX套接字配置Nginx proxy_pass Node.js HTTP服务器?
发布时间:2020-12-15 18:40:23 所属栏目:安全 来源:网络整理
导读:我正在尝试配置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 htt
我正在尝试配置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 requestn'); }).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"
这是一个解决方案,但不是解决方案. 您可能应该使用相同的用户和/或同一组运行两个Web服务器,这样您就不必使您的套接字世界可读.此外,我不明白为什么套接字需要可执行.所以6应该就够了.即:660 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |