For nylig har der været behov for denne del i mit arbejde; upstream er fuldstændig dynamisk, specificeret af klienten, der er nogle fejl i starten, og til sidst specificeres DNS-tjenesten via resolveren, den specifikke proces er som følger.
1. Begynd at træde på pitten
Konfigurationen af nginx er som følger:
Når jeg sender denne slags anmodning:
Følgende fejl blev rapporteret:
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 [fejl] 25307#25307: *48 ingen resolver defineret til at løsewww.baidu.com, klient: 127.0.0.1, server: localhost, forespørgsel: "GET / HTTP/1.1", vært: "127.0.0.1:8001" Det er tydeligt, at dette problem siger, at manglende specificering af en resolver medfører brugerdefineret upstreamwww.baidu.com.
2. Brug Resolver til at definere domænenavnsopløsning
Den modificerede nginx-konfiguration er som følger:
Nu er anmodningerne 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-instruktioner
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 bruge polling til at tilgå DNS-tjenester, nginx vil cache resultaterne af DNS-domænenavnsopløsning, cachetiden er angivet som gyldig, og IPv6 bruges til at vise IPv6 til eller fra.
resolver_timeout bruges til at angive tidsgrænsen for DNS-opløsning.
|