我有一个具有以下配置的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;
}
}
并在节点服务器上使用node express监听端口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 :(得分:0)
首先,当您使用浏览器或卷曲浏览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