nginx DNS 緩存問題

  • 目前的網絡架構 外網---> nginx ---> dns ---> F5 --->應用 dns經過域名解析到兩臺F5上,而在此過程當中F5的應用若是掛了,DNS能夠很快的識別到變化 並映射到正確的IP nslookup domain能夠看到真實的ip地址 經過查詢得知是nginx在第一次解析域名後 會緩存該域名的信息 而且不會消除 解決辦法
  1. 用 nginx -s reload進行操做, 缺點:可是真實環境上這種突發狀況不少,用定時任務去relaod nginx的配置不夠優雅
  2. 原生nginx使用set命令使用變量 該方式 我沒有執行成功,具體緣由未知
  3. 使用模塊ngx_upstream_jdomain 在http配置域中配置DNS服務器,在upstream中按照這個模塊的格式配置,支持設置每隔多少秒進行一次解析(抓包分析過設置interval可指定解析間隔),若是解析失敗則使用緩存中的上一次解析結果的IP地址訪問。

例:nginx

http {緩存

resolver    ip;

upstream test {

    jdomain  www.xxx.com port=8080 interval=10; #指定域名和端口,每隔10秒進行一次解析

}

server {

    listen       8080;

    client_body_buffer_size 10m;

    server_name  localhost;

    location / {

            proxy_pass      http://test;

    }

}服務器

缺點:DNS服務器只能在http配域中全局配置 最終選擇了第三種網絡

相關文章
相關標籤/搜索