Viime aikoina on ollut tarve tälle osa-alueelle työssäni: upstream on täysin dynaaminen, asiakas määrittelee sen, alussa on joitakin virheitä, ja lopuksi DNS-palvelu määritellään ratkaisijan kautta, tarkka prosessi on seuraava.
1. Aloita astuminen kuoppaan päälle
Nginxin konfiguraatio on seuraava:
Kun lähetän tällaisen pyynnön:
Seuraava virhe raportoitiin:
access.log: 127.0.0.1 - - [14.9.2017:23:37:10 +0800] "GET / HTTP/1.1" 502 179 "-" "curl/7.29.0"
error.log: 2017/09/14 23:38:31 [virhe] 25307#25307: *48 ei ratkaisevaa ratkaisuawww.baidu.com, asiakas: 127.0.0.1, palvelin: localhost, pyyntö: "GET / HTTP/1.1", isäntä: "127.0.0.1:8001" On selvää, että tämä ongelma tarkoittaa, että ratkaisijan määrittämättä jättäminen aiheuttaa mukautettuja upstreamwww.baidu.com.
2. Käytä Resolveria verkkotunnuksen resoluutioon määrittämiseen
Muokattu nginx-konfiguraatio on seuraava:
Nyt pyynnöt ovat normaalit 200:
req: curl "127.0.0.1:8001/" -H "upstream-isäntä:www.baidu.com" -Voa curl "127.0.0.1:8001/" -H "upstream-isäntä:www.qq.com" -Voa
access.log: 127.0.0.1 - - [14.9.2017:23:44:01 +0800] "GET / HTTP/1.1" 200 2381 "-" "curl/7.29.0" 127.0.0.1 - - [14.9.2017:23:44:07 +0800] "GET / HTTP/1.1" 200 244182 "-" "curl/7.29.0" 3. Resolverin ohjeet
Resolverin syntaksi on seuraava:
Syntax: resolver address ... [valid=time] [ipv6=on|off];
Default: —
Context: http, server, location Voit konfiguroida useita DNS-palveluita, nginx käyttää kyselyä päästäkseen DNS-palveluihin, nginx välimuistittaa DNS-verkkotunnuksen ratkaisutulokset, välimuistiaika määritellään validilla ja IPv6:ta käytetään IPv6:n näyttämiseen päällä tai pois päältä.
resolver_timeout käytetään DNS-resoluution aikakatkaisun määrittämiseen.
|