如何在带有node.js的Windows Azure上修复“端口80需要提升权限”?

时间:2016-03-23 23:39:03

标签: node.js azure azure-web-sites azure-web-app-service

我创建了简单的Node.js express教程,它在本地运行。我设置我的Azure Web App从BitBucket中提取repo,但是我在LogFiles / Application中遇到以下错误:

  

端口80需要提升权限

为什么会这样?节点是否以提升的权限运行?如果没有,我该如何配置呢?

更新:重要!!!

在我看到的任何文档中都没有明确解释......

Azure似乎正在为node.js应用程序执行端口转发。因此,当您在端口80/443上点击Azure URL时,它会转发到运行node.js应用程序的另一个端口。你没有设置那个港口!它是由Azure管理的环境变量,因此您可以在process.env.PORT上进行简单的监听。完成,就是这样。

4 个答案:

答案 0 :(得分:2)

我假设您使用的是Azure App Service。即使从最终用户的角度来看,请求是通过端口80,您将需要更新您的应用程序以侦听从环境变量获得的端口,负载均衡器将实际分配请求的端口。

有关详细信息,请参阅下面的教程。

https://azure.microsoft.com/en-us/documentation/articles/web-sites-nodejs-develop-deploy-mac/

var http = require('http')
var port = process.env.PORT || 1337;
http.createServer(function(req, res) {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hello World\n');
}).listen(port);

答案 1 :(得分:2)

我刚修好了。在我的情况下,它是由于在env变量(应用程序设置)中设置PORT = 80。一旦我从那里删除PORT并让Azure自动处理端口,错误就消失了。

答案 2 :(得分:1)

使用Nginx

Nginx(发音为"引擎x")是一个Web服务器。它可以充当HTTP,HTTPS,SMTP,POP3和IMAP协议的反向代理服务器,以及负载均衡器和HTTP缓存。

使用root权限运行应用程序或直接在端口80上运行应用程序不是一种好习惯。

答案 3 :(得分:0)

使用sudo运行应用程序。我建议你查看这个问题。 https://stackoverflow.com/a/16573737/5583278

答案是将流量从nodejs端口重定向到端口80.这将避免必须以root身份运行节点。