【问题标题】:Node.JS not serving port 80 on IISNode.JS 不为 IIS 上的端口 80 提供服务
【发布时间】:2021-04-13 22:32:17
【问题描述】:

我完全停止了 Windows Server 2019 上的 IIS,并在端口 80 上为我的 NodeJS 应用程序提供服务,如下所示:

const express= require('express');
const app=express();
...
...
...
const hostname = '0.0.0.0';
const port = 80;
app.listen(port, hostname, () => {
        console.log(`Server running at http://${hostname}:${port}/`);
});

但是 Node 没有远程服务。它适用于 localhost:80

我根据我在 StackOverflow 找到的答案设置了主机名 = '0.0.0.0'。服务器的公网 IP 也不行。

打开 IIS 并设置站点时,我可以看到 index.html 文件很好,所以端口 80 可以工作。

是服务器问题,还是 node.js 问题?

我开始节点

node index.js

谢谢。

【问题讨论】:

  • 如果 IIS 正在运行,则端口 80 被占用,您不能这样做。使用另一个端口。配置 IIS 以转发给它。 IIS 可能会使用您的 Node 进程不使用的防火墙规则。
  • 我相信你是对的。我在防火墙上启用了端口 3000,它可以远程工作。删除端口 80 的当前规则并创建新规则是一种不好的做法吗?运行 node.js 时 IIS 服务已关闭,但如前所述,它仍然无法正常工作。
  • 我将 IIS 设置为转发到您的 Node 应用程序而不是直接公开它。
  • 我正在安装应用程序请求路由扩展和 URL 重写。完成后我会尽快通知你。谢谢塔德曼。
  • 塔德曼。我添加了一个反向代理规则,它运行良好。当我添加一个规则以打开端口 80 而不删除默认规则时,它也有效,但我听取了您的建议,并将 IIS 转发到我的 Node 应用程序。其他社区用户可能会遇到同样的问题,我想接受你的回答来帮助别人,但我相信 SO 不会让我接受评论作为答案,对吗?

标签: node.js


【解决方案1】:

对于那些面临这个问题的人,我按照 Tadman 对上述 cmets 的建议进行了修复:配置 IIS 进行转发(通过安装应用程序请求路由和 IIS 的 URL 重写扩展)。

在 Windows 防火墙上创建新规则以启用端口 80 时,Node.js 也有效。防火墙上针对端口 80 的默认规则仅适用于 IIS,不适用于 Node.js。

至于上面提到的扩展,这里有一个关于如何安装和设置的很好的指导:

https://dev.to/petereysermans/hosting-a-node-js-application-on-windows-with-iis-as-reverse-proxy-397b

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-31
    • 2015-04-18
    • 2012-02-06
    • 2013-09-13
    • 2021-05-12
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多