首頁  >  文章  >  後端開發  >  Nginx 動態DNS反向代理人的幾種寫法

Nginx 動態DNS反向代理人的幾種寫法

不言
不言原創
2018-05-09 10:37:042117瀏覽

這篇文章主要介紹了詳解Nginx 動態DNS 反向代理的幾種寫法,詳細的介紹了Nginx 動態DNS 反向代理的4種方法,非常具有實用價值,需要的朋友可以參考下

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

Nginx 預設會快取 DNS,大家都知道,如果要做反向代理,其實是存取的目標 ip,所以一旦快取了目標 ip 就會非常麻煩。

☕字的四種寫法遠近聞名,萬萬沒想到,Nginx 動態DNS 反向代理也有N 種玩法,這主要取決於你用的Nginx 版本,當然運維告訴我,最好是不要用動態DNS,但是基於業務需要,咱們也沒有辦法。

徠字的第一種寫法:Nginx

在Nginx 中透過設定變數可以曲線救國,當然有缺點,透過變數的方法沒有辦法進行負載平衡,非常麻煩,當然如果你只有單機(在實際業務場景中幾乎不存在),還是可以一試的:

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

第二種寫法:Nginx Plus

當然Nginx 不太好用,增強版的Plus 就提供了一個更棒的寫法,它支援在server 中寫入:

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

第三種寫法:Tengine

#Tengine 是淘寶家的魔改Nginx,其實我挺煩的,因為最開始我不知道我們用的是Tengine,導致配置沒有什麼卵用,但是Tengine 對於動態網域解析卻支援的非常不錯,官方文件寫得也很清楚。

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

其他

#當然,也可以使用Lua 腳本來實現,或是別人的模組,但考慮到怕鼓搗壞,我還是不亂折騰了,所以沒有採取這種方案。

以上就是本篇文章的全部內容了,更多相關內容請關注PHP中文網。

相關推薦:

Nginx反向代理websocket設定實例

以上是Nginx 動態DNS反向代理人的幾種寫法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn