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

时间:2016-07-02 20:57:48

标签: node.js server webserver portforwarding koa

我使用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上设置了端口转发到此地址,在连接port 80时在Windows 10防火墙中例外通过任何协议,并使用You Get Signal进行测试:

Port Forwarding Tester

确认该端口当前处于打开状态。当我浏览localhost:80时,我可以看到默认页面。但是,当我在浏览器中输入计算机的公共IP地址时(我输入的部分模糊,我认为应该是正确的):

IP Address

此页面无法加载,并显示以下错误:

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日志中没有任何活动(当我通过localhost:80浏览到那里时记录正常)。什么想法可以阻止连接?

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

const HOST = "127.0.0.1";

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

这适用于环回地址,但是当我指定我的公共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

1 个答案:

答案 0 :(得分:0)

默认koa只能绑定到127.0.0.1,因此您可以尝试使用.listen(80, '0.0.0.0')

显式绑定到任何主机

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