V poslednej dobe je v mojej práci potrebný tento aspekt, upstream je úplne dynamický, špecifikovaný klientom, na začiatku sú chyby a nakoniec je DNS služba špecifikovaná cez resolver, konkrétny proces je nasledovný.
1. Začnite stúpať na jamu
Konfigurácia nginx je nasledovná:
Keď posielam takýto žiadosť:
Bola nahlásená nasledujúca chyba:
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 [chyba] 25307#25307: *48 žiadny resolver definovaný na riešeniewww.baidu.com, klient: 127.0.0.1, server: localhost, požiadavka: "GET / HTTP/1.1", hostiteľ: "127.0.0.1:8001" Je zrejmé, že tento problém uvádza, že nešpecifikovanie resolvera spôsobuje vlastné upstreamwww.baidu.com.
2. Použiť Resolver na definovanie riešenia doménových mien
Modifikovaná konfigurácia nginx je nasledovná:
Teraz je počet požiadaviek normálnych 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. Inštrukcie resolvera
Syntax resolvera je nasledovná:
Syntax: resolver address ... [valid=time] [ipv6=on|off];
Default: —
Context: http, server, location Môžete konfigurovať viacero DNS služieb, nginx používa polling na prístup k DNS službám, nginx ukladá výsledky DNS doménového riešenia, čas cache je určený ako valid a IPv6 sa používa na zobrazenie IPv6 zapnutého alebo vypnuteho.
resolver_timeout sa používa na určenie časového limitu pre DNS rozlíšenie.
|