2017-09-30 67 views
0

我有以下配置Nginx上服务器:如何配置nginx服务器将请求转发到具有空路径的节点服务器?

server 
{ 
    listen 80; 
    server_name example.ca www.example.ca; 
    location/{ 

proxy_pass http://127.0.0.1:3000; 
proxy_http_version 1.1; 
proxy_set_header Upgrade $http_upgrade; 
proxy_set_header Connection 'upgrade'; 
proxy_set_header Host $host; 
proxy_cache_bypass $http_upgrade; 
} 
} 

和节点服务器上正在使用的节点明确如下监听3000端口;

app.get('*', function (req, res) { 
    console.log(' request received ', req.headers.host); 
}); 

和我有一个域www.example.com其指向Nginx的服务器的IP,测试现在做的是:

http://www.example.com/test结果===>请求接收 www.example .COM

http://www.example.com/test/abc结果===>请求接收 www.example.com

http://www.example.com结果===>(ⅰ得到无结果!!它就像 app.get没有触发)

所以任何人可以帮助我解决这个问题?当我浏览没有任何路径参数的域没有得到任何结果,所以它像Nginx没有转发这个请求到节点服务器!

回答

0

首先,当您使用浏览器或curl浏览abc.com时,它始终会发送路径为/。没有办法发送空白路径

接下来你的nginx配置是一个socket.io实现。它应该低于

server 
{ 
    listen 80; 
    server_name example.ca www.example.ca; 
    location/{ 
     proxy_pass http://127.0.0.1:3000; 
     proxy_http_version 1.1; 
     proxy_set_header Host $host; 
    } 
} 

接下来,你不会结束你的请求,他们将只是超时。更改您的代码如下

app.get('*', function (req, res) { 
    console.log(' request received ', req.headers.host); 
    res.status(200).send("all ok"); 
}); 

而且当你有问题,你可以使用curl像下面

curl -v http://www.example.com 
+0

我已经尝试这个测试,使用浏览器或卷曲时,仍然什么也没得到! – devMan

+0

所以你的意思是如果我使用位置/这会将www.example.com重定向到节点服务器呢?在我的情况下,请求只重定向,如果我有路径中的东西,如ww.example.com/about! – devMan

+0

我发现什么阻止这个请求,似乎当我使用app.use(express.static(__ dirname +'/ public'));从公共文件夹到服务器静态文件,然后这个请求不会触发!我试图删除app.use,它的工作原理,但我也需要提供静态文件! – devMan

相关问题