Nyligen har det funnits ett behov av denna aspekt i mitt arbete, uppströms är helt dynamiskt, specificerat av klienten, det finns några fel i början, och slutligen specificeras DNS-tjänsten via resolvern, den specifika processen är följande.
1. Börja trampa på gropen
Konfigurationen av nginx är som följer:
När jag skickar den här typen av förfrågan:
Följande fel rapporterades:
access.log: 127.0.0.1 - - [14/sep/2017:23:37:10 +0800] "GET / HTTP/1.1" 502 179 "-" "curl/7.29.0"
error.log: 2017/09/14 23:38:31 [fel] 25307#25307: *48 ingen resolver definierad för att lösawww.baidu.com, klient: 127.0.0.1, server: localhost, förfrågan: "GET / HTTP/1.1", värd: "127.0.0.1:8001" Det är tydligt att detta problem innebär att avsaknad av att specificera en resolver orsakar anpassad upstreamwww.baidu.com.
2. Använd Resolver för att definiera domännamnsupplösning
Den modifierade nginx-konfigurationen är följande:
Nu är förfrågningarna normala 200:
req: curl "127.0.0.1:8001/" -H "upstream-host:www.baidu.com" -voa curl "127.0.0.1:8001/" -H "upstream-host:www.qq.com" -voa
access.log: 127.0.0.1 - - [14/sep/2017:23:44:01 +0800] "GET / HTTP/1.1" 200 2381 "-" "curl/7.29.0" 127.0.0.1 - - [14/sep/2017:23:44:07 +0800] "GET / HTTP/1.1" 200 244182 "-" "curl/7.29.0" 3. Resolverinstruktioner
Syntaxen för resolvern är följande:
Syntax: resolver address ... [valid=time] [ipv6=on|off];
Default: —
Context: http, server, location Du kan konfigurera flera DNS-tjänster, nginx använder polling för att komma åt DNS-tjänster, nginx cacklar resultaten av DNS-domännamnsupplösning, cachetiden anges som giltig, och IPv6 används för att visa IPv6 på eller av.
resolver_timeout används för att ange tidsgränsen för DNS-upplösning.
|