Viimasel ajal on minu töös tekkinud vajadus selle aspekti järele: ülesvoolu on täiesti dünaamiline, kliendi poolt määratud, alguses on mõned vead ja lõpuks määratakse DNS-teenus lahendaja kaudu, konkreetne protsess on järgmine.
1. Alusta auku astumist
nginx konfiguratsioon on järgmine:
Kui ma saadan sellise palve:
Järgmine viga teatati:
access.log: 127.0.0.1 - - [14.september/2017:23:37:10 +0800] "GET / HTTP/1.1" 502 179 "-" "curl/7.29.0"
error.log: 2017/09/14 23:38:31 [viga] 25307#25307: *48 lahendajat ei ole määratud lahendamisekswww.baidu.com, klient: 127.0.0.1, server: localhost, päring: "GET / HTTP/1.1", host: "127.0.0.1:8001" On selge, et see probleem näitab, et lahendaja määramata jätmine põhjustab kohandatud upstreamwww.baidu.com.
2. Kasuta Resolverit domeeninime resolutsiooni määratlemiseks
Muudetud nginx-konfiguratsioon on järgmine:
Nüüd on päringuid tavalised 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.september/2017:23:44:01 +0800] "GET / HTTP/1.1" 200 2381 "-" "curl/7.29.0" 127.0.0.1 - - [14.september/2017:23:44:07 +0800] "GET / HTTP/1.1" 200 244182 "-" "curl/7.29.0" 3. Lahendaja juhised
Lahendaja süntaks on järgmine:
Syntax: resolver address ... [valid=time] [ipv6=on|off];
Default: —
Context: http, server, location Saad seadistada mitu DNS-teenust, nginx kasutab päringuid DNS-teenuste kasutamiseks, nginx salvestab DNS-domeeninime lahenduse tulemused, vahemälu aeg määratakse kehtiva järgi ja IPv6 abil kuvatakse IPv6 sisse või välja.
resolver_timeout kasutatakse DNS-i lahenduse ajapiirangu määramiseks.
|