无法通过端口 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 的端口。
我用 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 的端口。