Nylig har det vært behov for dette aspektet i arbeidet mitt, oppstrøms er helt dynamisk, spesifisert av klienten, det er noen feil i starten, og til slutt er DNS-tjenesten spesifisert gjennom resolveren, den spesifikke prosessen er som følger.
1. Begynn å tråkke på gropen
Konfigurasjonen av nginx er som følger:
Når jeg sender denne typen forespørsel:
Følgende feil ble rapportert:
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 [feil] 25307#25307: *48 ingen resolver definert for å løsewww.baidu.com, klient: 127.0.0.1, server: localhost, forespørsel: "GET / HTTP/1.1", vert: "127.0.0.1:8001" Det er tydelig at dette problemet sier at manglende spesifisering av en resolver fører til egendefinert upstreamwww.baidu.com.
2. Bruk Resolver for å definere domenenavnoppløsning
Den modifiserte nginx-konfigurasjonen er som følger:
Nå er forespørslene normale, 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. Resolver-instruksjoner
Syntaksen for resolveren er som følger:
Syntax: resolver address ... [valid=time] [ipv6=on|off];
Default: —
Context: http, server, location Du kan konfigurere flere DNS-tjenester, nginx vil bruke polling for å få tilgang til DNS-tjenester, nginx vil cache resultatene av DNS-domenenavnoppløsning, cache-tiden er spesifisert som gyldig, og IPv6 brukes til å vise IPv6 av eller på.
resolver_timeout brukes til å spesifisere tidsavbruddet for DNS-oppløsning.
|