鍍金池/ 問(wèn)答/Linux  網(wǎng)絡(luò)安全/ nginx tcp流量轉(zhuǎn)發(fā),本地DNS服務(wù)器不生效

nginx tcp流量轉(zhuǎn)發(fā),本地DNS服務(wù)器不生效

nginx tcp流量轉(zhuǎn)發(fā),本地DNS服務(wù)器不生效

現(xiàn)在有一個(gè)簡(jiǎn)單需求是通過(guò)nginx來(lái)進(jìn)行tcp流量的轉(zhuǎn)發(fā),即nginx監(jiān)聽(tīng)某端口,當(dāng)接收到請(qǐng)求時(shí),將流量轉(zhuǎn)發(fā)到對(duì)應(yīng)的域名及端口,由于這個(gè)域名是時(shí)長(zhǎng)變化的,需要通過(guò)一個(gè)本地的DNS進(jìn)行查詢。

但是在配置resolver后,發(fā)現(xiàn)nginx并沒(méi)有去查詢本地DNS,仍然是查詢了系統(tǒng)的DNS(不是緩存的問(wèn)題)。如果將系統(tǒng)的DNS服務(wù)器改為本地DNS服務(wù)器地址,則可以正常轉(zhuǎn)發(fā)。

配置如下所示,其實(shí)非常簡(jiǎn)單。

stream {
    resolver 127.0.0.1;
    server {
        listen 8888;
        proxy_pass 1.service.consul:80
    }
}

如上所示,就是要把8888端口的流量轉(zhuǎn)發(fā)到1.service.consul所對(duì)應(yīng)的ip上,求各位大佬賜教。

回答
編輯回答
笑浮塵

proxy_pass要使用變量,才會(huì)由nginx發(fā)起DNS請(qǐng)求
所以先設(shè)置一個(gè)變量即可

set $consul "1.service.consul";
proxy_pass  $consul:80;
2017年9月8日 03:11