如何在Windows Azure上使用node.js修复“端口80需要提升的特权”?

6
我创建了一个简单的Node.js express教程,本地运行正常。我设置了Azure Web App从BitBucket拉取repo,它也确实拉取了,但是我在LogFiles/Application中收到以下错误信息:
引用: 端口80需要提升特权
为什么会出现这种情况?难道node没有以特权权限运行吗?如果没有,那么如何配置以获得特权权限呢?
更新:重要!!!
在任何我看过的文档中都没有明确解释这一点……Azure似乎正在为node.js应用程序进行端口转发。因此,当您在80/443端口上访问Azure URL时,它将被转发到另一个端口,该端口上运行着您的node.js应用程序。你不需要设置那个端口!它是由Azure管理的环境变量,所以你只需使用process.env.PORT进行监听即可。完成,就是这样。
4个回答

3

我假设你正在使用Azure应用服务。即使从最终用户的角度来看,请求也是通过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
你可能需要补充说明,这并不意味着最终用户无法通过端口80访问您的服务。他们仍然可以。这只是一种共享资源的服务允许多个Web服务器进程共享硬件的方式之一,而前置代理或负载均衡器会将您的请求定向到实际运行服务器的端口。 - jfriend00
使用 BitBucket 部署或 Visual Studio 发布到 Azure 后,我的代码能够成功上传到 App Service ,但是我遇到了端口 80 权限不足的问题。我需要在 web.config 或 package.json 中设置什么吗?我之前从未在 Heroku 或 AWS 上部署 node.js 时遇到过这样的问题。 - SomethingOn
1
请看我的回答,关键是您的应用程序需要监听端口“process.env.PORT”。 - Xiaomin Wu
我们需要设置process.env.PORT环境变量吗?还是Azure正在进行某种端口转发? - SomethingOn
1
它将被 Azure 填充,你只需要使用它即可 :) - Xiaomin Wu

2
我刚刚解决了这个问题。在我的情况下,是因为在环境变量(应用程序设置)中设置了PORT = 80。一旦我从那里删除了PORT,并让Azure自动处理端口,错误就消失了。

1

使用Nginx

Nginx(发音为“engine x”)是一个Web服务器。它可以作为HTTP、HTTPS、SMTP、POP3和IMAP协议的反向代理服务器,以及负载均衡器和HTTP缓存。

不建议以root权限运行应用程序或直接在端口80上运行应用程序。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接