佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > 詳解Nginx 動態(tài) DNS 反向代理的幾種寫法

詳解Nginx 動態(tài) DNS 反向代理的幾種寫法

熱門標(biāo)簽:硅谷的囚徒呼叫中心 檢查注冊表項(xiàng) 阿里云 使用U盤裝系統(tǒng) 智能手機(jī) 網(wǎng)站建設(shè) 百度競價點(diǎn)擊價格的計算公式 美圖手機(jī)

這篇文章的更新拖了半個月,真的是感動中國了。

Nginx 默認(rèn)會緩存 DNS,大家都知道,如果做反向代理,其實(shí)是訪問的目標(biāo) ip,所以一旦緩存了目標(biāo) ip 就會非常麻煩。

茴字的四種寫法遠(yuǎn)近聞名,萬萬沒想到,Nginx 動態(tài) DNS 反向代理也有 N 種玩法,這主要取決于你用的 Nginx 版本,當(dāng)然運(yùn)維告訴我,最好是不要用動態(tài) DNS,但是基于業(yè)務(wù)需要,咱們也沒有辦法。

茴字的第一種寫法:Nginx

在 Nginx 中通過設(shè)置變量可以曲線救國,當(dāng)然有缺點(diǎn),通過變量的方法沒有辦法進(jìn)行負(fù)載均衡,非常麻煩,當(dāng)然如果你只有單機(jī)(在實(shí)際業(yè)務(wù)場景中幾乎不存在),還是可以一試的:

server {
  ...
  resolver 127.0.0.1;
  set $backend "http://dynamic.example.com:80";
  proxy_pass $backend;
  ...
}

第二種寫法:Nginx Plus

當(dāng)然 Nginx 不太好用,增強(qiáng)版的 Plus 就提供了一個更棒的寫法,它支持在 server 中寫入:

server {
  ...
  resolver 127.0.0.1 valid=30s;
  proxy_pass http://upstream-sites;
  ...
}

第三種寫法:Tengine

Tengine 是淘寶家的魔改 Nginx,其實(shí)我挺煩的,因?yàn)樽铋_始我不知道我們用的是 Tengine,導(dǎo)致配置沒有什么卵用,但是 Tengine 對于動態(tài)域名解析卻支持的非常不錯,官方文檔寫得也很清楚。

upstream backend {
  dynamic_resolve fallback=stale fail_timeout=30s;
  server a.com;
  server b.com;
}
server {
  ...
  location / {
    proxy_pass http://backend;
  }
}

其他

當(dāng)然,還可以使用 Lua 腳本來實(shí)現(xiàn),或者是別人的模塊,但是考慮到怕鼓搗壞,我還是不亂折騰了,所以沒有采取這種方案。

參考

ngx_http_upstream_dynamic_module - Tengine
Using DNS for Service Discovery with NGINX and NGINX Plus

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:湖北 湘潭 賀州 黃山 煙臺 山南 懷化 通遼

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解Nginx 動態(tài) DNS 反向代理的幾種寫法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    集贤县| 泾川县| 阿瓦提县| 东海县| 肥城市| 新建县| 惠水县| 安溪县| 余江县| 内乡县| 游戏| 龙山县| 甘泉县| 株洲县| 辉县市| 云安县| 札达县| 图片| 大渡口区| 乌兰县| 榆社县| 攀枝花市| 进贤县| 福州市| 周宁县| 鄢陵县| 洛宁县| 吉安县| 信宜市| 宝应县| 淮北市| 昭觉县| 延寿县| 曲阜市| 宜州市| 额济纳旗| 永州市| 政和县| 瑞安市| 嘉兴市| 庆云县|