node.js https server.listen抛出getaddrinfo ENOTFOUND example.com

时间:2018-09-24 17:45:51

标签: node.js express https

我有一个在Debian 7服务器上运行的Express javascript服务器。我大约在8到10天前进行了设置,效果很好。我可以请求所有可用的路径并获得正确的响应。

今天,我意识到由于某种原因,请求https://example.com:1234/examplepath不再有效。我登录到服务器,发现快递服务器仍在运行,但没有任何请求通过。因此,我停止了服务器并尝试再次启动它。但是8到10天前起作用的东西现在突然抛出了错误

events.js:160
  throw er; // Unhandled 'error' event
  ^

Error: getaddrinfo ENOTFOUND example.com
    at errnoException (dns.js:28:10)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26)

以下是我的server.js的相关代码。

const app = express();
const helmet = require('helmet');
app.use(helmet());
app.use(helmet.contentSecurityPolicy({
    directives: {
        defaultSrc:["'self'"]
    }
}));
app.use(helmet.expectCt());
app.use(helmet.noCache());
app.use(helmet.referrerPolicy());

const port = 1234;
const hostname = 'example.com';

const options = {
    key: fs.readFileSync('/etc/letsencrypt/live/example.com/privkey.pem'),
    cert: fs.readFileSync('/etc/letsencrypt/live/example.com/fullchain.pem')
};

...

MongoClient.connect(db.url, (error, database) => {
    if (error) return console.log(error);

    require('./app/routes')(app, database.db("placeholder"), config);

    https.createServer(options, app).listen(port, hostname, () => {
        console.log('We are live on ' + hostname + ':' + port);
    });
});

使用 https.createServer 创建服务器是可行的,但是调用 listen()会引发顶部提到的错误。证书是最新的,并且 .listen(port,'localhost',()可以正常工作。

我没有更改代码或服务器上的任何内容。

1 个答案:

答案 0 :(得分:0)

好吧,原来我的域名提供商搞砸了。一切都会恢复正常。