Node.js v4.4.3 DNS解析无法按预期工作

时间:2017-07-10 22:13:39

标签: node.js dns

我在带有Node.js v4.4.3的Oracle Linux 7上运行了一个应用程序。我们的服务器在resolv.conf中定义了两个DNS服务器。我们最近主DNS服务器失败了,所以resolv.conf中定义的辅助DNS服务器应该有效。但是Node.js无法使用辅助服务器。它几乎就像是忽略了辅助设备而只是试图使用主设备。

我认为它可能是操作系统问题,所以我手动修改了resolv.conf文件并使用DIG进行了测试,并且它正确使用了辅助服务器,但是当我尝试使用Node时,它就不起作用了。我编写了下面的程序来做一些测试,基本上在程序运行时修改了resolv.conf而没有。

"use strict";

var dns = require('dns');
var express = require('express');
var bodyParser = require('body-parser');
var expressHandlebars = require('express-handlebars');
var cookieParser = require('cookie-parser');
var httpClient = require('request-promise');

//Initialize Express and Handlebars
var app = express();
app.enable('trust proxy');
app.use(cookieParser());
app.use(bodyParser.json()); // support json encoded bodies
app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies
//Configure express app settings
app.engine('handlebars', expressHandlebars({extname: '.hbs'}));
app.set('view engine', 'handlebars');

app.get('/', function(req,res){
  var options = { uri : 'https://someother/internal/api', json : true };
  httpClient(options)
    .then(function(data){
      var success = { data : data };
      console.log(dns.getServers(), 'Ok!');
      res.json(success);
    })
    .catch(function(err){
      var failed = { error : err.message };
      console.log(dns.getServers(),err.message);
      res.status(400).json(failed);
    });
});

app.listen(8080, function(){
  console.log("app started");
});

任何关于为什么Node不会重新读取resolv.conf的想法,或者当它意识到第一个服务器不能正常工作时它不会使用辅助DNS服务器的任何想法都表示赞赏。

1 个答案:

答案 0 :(得分:0)