詳解Nginx 動態(tài) DNS 反向代理的幾種寫法
這篇文章的更新拖了半個月,真的是感動中國了。
Nginx 默認會緩存 DNS,大家都知道,如果做反向代理,其實是訪問的目標 ip,所以一旦緩存了目標 ip 就會非常麻煩。
茴字的四種寫法遠近聞名,萬萬沒想到,Nginx 動態(tài) DNS 反向代理也有 N 種玩法,這主要取決于你用的 Nginx 版本,當然運維告訴我,最好是不要用動態(tài) DNS,但是基于業(yè)務需要,咱們也沒有辦法。
茴字的第一種寫法:Nginx
在 Nginx 中通過設置變量可以曲線救國,當然有缺點,通過變量的方法沒有辦法進行負載均衡,非常麻煩,當然如果你只有單機(在實際業(yè)務場景中幾乎不存在),還是可以一試的:
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 對于動態(tài)域名解析卻支持的非常不錯,官方文檔寫得也很清楚。
upstream backend {
dynamic_resolve fallback=stale fail_timeout=30s;
server a.com;
server b.com;
}
server {
...
location / {
proxy_pass http://backend;
}
}
其他
當然,還可以使用 Lua 腳本來實現(xiàn),或者是別人的模塊,但是考慮到怕鼓搗壞,我還是不亂折騰了,所以沒有采取這種方案。
參考
ngx_http_upstream_dynamic_module - Tengine
Using DNS for Service Discovery with NGINX and NGINX Plus
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Nginx反向代理出現(xiàn)502?Bad?Gateway問題解決
在配置Nginx反向代理時遇到502 Bad Gateway錯誤,經過排查發(fā)現(xiàn)是SSL握手問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-10-10
Nginx HttpMemcModule和直接訪問memcached效率對比測試
2013-09-09
Linux 系統(tǒng) nginx 服務器安裝及負載均衡配置詳解
nginx(engine x) 是一個 高性能 的 HTTP 和 反向代理 服務器、郵件代理服務器以及通用的 TCP/UDP 代理服務器。這篇文章主要介紹了Linux 系統(tǒng) nginx 服務器安裝及負載均衡配置詳解,需要的朋友可以參考下2019-07-07
Nginx服務器實現(xiàn)通過ip和user_gent限制訪問的方法分析
這篇文章主要介紹了Nginx服務器實現(xiàn)通過ip和user_gent限制訪問的方法,結合實例形式分析了Nginx通過限制ip和user_gent限制訪問來過濾DDOS攻擊的相關操作技巧,需要的朋友可以參考下2019-07-07

