Recent, a apărut o nevoie de acest aspect în munca mea, upstream-ul este complet dinamic, specificat de client, există unele erori la început, iar în final serviciul DNS este specificat prin resolver, procesul specific este următorul.
1. Începe să calci pe groapă
Configurația nginx este următoarea:
Când trimit astfel de cereri:
A fost raportată următoarea eroare:
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 [eroare] 25307#25307: *48 niciun rezolvator definit pentru rezolvarewww.baidu.com, client: 127.0.0.1, server: localhost, cerere: "GET / HTTP/1.1", host: "127.0.0.1:8001" Este clar că această problemă afirmă că lipsa specificării unui rezolvator cauzează upstreamwww.baidu.com personalizate.
2. Folosirea Resolver pentru a defini rezoluția numelor de domenii
Configurația modificată nginx este următoarea:
Acum cererile sunt 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. Instrucțiuni de rezolvare
Sintaxa pentru resolver este următoarea:
Syntax: resolver address ... [valid=time] [ipv6=on|off];
Default: —
Context: http, server, location Poți configura mai multe servicii DNS, nginx va folosi interogarea pentru a accesa serviciile DNS, nginx va stoca în cache rezultatele rezoluției numelor de domeniu DNS, timpul cache-ului este specificat de valid, iar IPv6 este folosit pentru a afișa IPv6 activat sau dezactivat.
resolver_timeout este folosit pentru a specifica timeout-ul pentru rezoluția DNS.
|