2017-07-10 28 views
0

我有一個應用程序在帶有Node.js v4.4.3的Oracle Linux 7上運行。我們的服務器有兩個在resolv.conf中定義的DNS服務器。我們最近有主DNS服務器失敗,所以在resolv.conf中定義的輔助DNS服務器應該已經工作了。但Node.js無法使用輔助服務器。這幾乎就像忽略了中學,只試圖使用小學。Node.js v4.4.3 DNS解析無法按預期工作

我認爲這可能是操作系統問題,所以我手動修改了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"); 
}); 

爲什麼節點不會有什麼想法重新讀取的resolv.conf或者爲什麼當它意識到第一個沒有工作表示讚賞,將不使用輔助DNS服務器。

+0

你添加輔助服務器節點進程已經開始之後? – mscdex

回答