无法通过端口 80 公开访问的网页

Webpage not publicly accessible via port 80

我用 Node/Koa 编写了以下代码,它服务于 port 80:

const 
koa = require('koa'),
route = require('koa-route'),
network = koa(),
common = require('koa-common'),
PORT = 80;

// enable logger middleware
network.use(common.logger('dev'));

// enable static middleware
network.use(common.static(__dirname + '/public'));

network.use(route.get('/', index));
network.use(route.get('/about', about));
function *index() {
 this.body = "<h1>Is this message on my computer, or on yours...?</h1>";
}
function *about() {
 this.body = "<h2>How about now...</h2>";
}
var server = network.listen(PORT, function () {
    console.log('Listening on port %d', server.address().port);
});

我已经为主机保留了一个地址 (168.192.1.91),在 port 80 上设置了到该地址的端口转发,在 Windows 10 防火墙中为 port 80 当通过任何协议连接时,并使用 You Get Signal:

进行测试

确认端口当前已打开。当我浏览到 localhost:80 时,我可以看到默认页面。但是,当我在浏览器中输入计算机的 public IP 地址时(我输入的是我部分遮盖的 IP 地址,我认为应该是正确的):

此页面加载失败,出现以下错误:

This site can’t be reached

109.[...] took too long to respond.
Try:
Reloading the page
Checking the connection
Checking the proxy and the firewall
ERR_CONNECTION_TIMED_OUT

并且 Koa 日志中没有 activity(当我通过 localhost:80 浏览到那里时,日志记录正常)。有什么想法可能会阻止连接吗?

我也试过将主机地址添加为第二个参数,如下所示:

const HOST = "127.0.0.1";

    var server = network.listen(PORT, HOST, function () {
    console.log('Listening on port %d', server.address().port);
});

这适用于环回地址,但是当我指定我的 public IP 时,我收到此错误:

C:\Sites\order-server>node --harmony cheese.js
events.js:154
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRNOTAVAIL [My public IP here]:80
    at Object.exports._errnoException (util.js:890:11)
    at exports._exceptionWithHostPort (util.js:913:20)
    at Server._listen2 (net.js:1221:19)
    at listen (net.js:1270:10)
    at net.js:1379:9
    at _combinedTickCallback (node.js:386:13)
    at process._tickCallback (node.js:407:11)
    at Function.Module.runMain (module.js:449:11)
    at startup (node.js:142:18)
    at node.js:939:3

也许 koa 默认只绑定到 127.0.0.1 所以你可以尝试使用 .listen(80, '0.0.0.0')

显式绑定到任何主机

否则,如果相应地配置了防火墙和端口转发,问题可能是您的互联网提供商在某处阻止了传入连接。您可以尝试使用超过 1024 的端口,如果它只阻止低于 1024 的端口。