如何使用带有公共主机名的app.listen(port,host)?

时间:2019-10-19 14:49:04

标签: node.js express host

我可以在app.listen(端口,主机)中将公共域名作为主机参数吗?

我知道我的IP,并且该IP上有3个域名。 domain1.com,domain2.com都在同一IP上。现在,我在app.get('/')中使用switch来路由不同域名的请求。但是,我想知道设置app.listen时是否可以路由主机。

我发现express.js网站上app.listen([port [,host [,backlog]]] [,回调])的条目确实很模糊。关于“主机”参数没有任何关系。我知道可以将其设置为localhost或127.0.0.1。但是,当我在其中添加公共域名时,我的代码失败了。 有人可以解释app.listen中的host参数如何工作吗?谢谢。

var express = require('express');
var app = express();
app.get('/', function(req, res) {res.send("hello")});
app.listen(3000, "my.domain");

错误代码:

Error: listen EADDRNOTAVAIL: address not available myip:3000
    at Server.setupListenHandle [as _listen2] (net.js:1281:19)
    at listenInCluster (net.js:1346:12)
    at GetAddrInfoReqWrap.doListen [as callback] (net.js:1485:7)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:65:10)
Emitted 'error' event on Server instance at:
    at emitErrorNT (net.js:1325:8)
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
  code: 'EADDRNOTAVAIL',
  errno: 'EADDRNOTAVAIL',
  syscall: 'listen',
  address: 'myip',
  port: 3000
}

服务器无法运行。

2 个答案:

答案 0 :(得分:0)

尝试使用主机名0.0.0.0启动服务器,并通过IP获取其他网络点的访问权限(通过ifconfig进行检查)。

答案 1 :(得分:0)

找出您的公共域的公共IP,然后将其放入app.listen。
例如,如果您的公共IP为1.2.3.4:
app.listen(3000,'1.2.3.4');