Mostanában szükség volt erre a szempontra a munkámban: az upstream teljesen dinamikus, az ügyfél határozza meg, az elején vannak hibák, végül a DNS szolgáltatást a feloldó határozza meg, a konkrét folyamat a következő.
1. Kezdj el lépni a gödörre
A nginx konfigurációja a következő:
Amikor ilyen kérést küldök:
A következő hibát jelentettek:
access.log: 127.0.0.1 - - [2017.14.23:37:10 +0800] "GET / HTTP/1.1" 502 179 "-" "curl/7.29.0"
error.log: 2017/09/14 23:38:31 [hiba] 25307#25307: *48 nincs resolver definiálva megoldásrawww.baidu.com, kliens: 127.0.0.1, szerver: localhost, request: "GET / HTTP/1.1", host: "127.0.0.1:8001" Nyilvánvaló, hogy ez a probléma azt állítja, hogy ha nem jelölik meg egy feloldót, egyedi upstreamwww.baidu.com okoz.
2. Használd a Resolver a domain név felbontásának meghatározására
A módosított nginx konfiguráció a következő:
Most a kérések normál 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 - - [2017.14.23:44:01 +0800] "GET / HTTP/1.1" 200 2381 "-" "curl/7.29.0" 127.0.0.1 - - [2017.14.23:44:07 +0800] "GET / HTTP/1.1" 200 244182 "-" "curl/7.29.0" 3. Feloldó utasítások
A resolver szintaxisa a következő:
Syntax: resolver address ... [valid=time] [ipv6=on|off];
Default: —
Context: http, server, location Több DNS szolgáltatást is konfigurálhatsz, a nginx lekérdezést használ a DNS szolgáltatásokhoz való hozzáféréshez, a nginx gyorsítótárazza a DNS domain név feloldásának eredményeit, a gyorsítótár idejét érvényes jelöli, az IPv6 pedig az IPv6 bekapcsolva vagy kikapcsolására szolgál.
resolver_timeout a DNS felbontás időtúllépésének meghatározására szolgál.
|