Af hverju Go fer fram hjá milliþjóni fyrir localhost
Greindu innbyggða loopback-undantekningu Go frá NO_PROXY og berðu umhverfisstýrða leiðarvalið saman við skýrt ProxyURL.
Umhverfisstýrður milliþjónsvalbúnaður Go hefur innbyggða undantekningu fyrir localhost og loopback-IP-viðtökustaði. Að tæma NO_PROXY fjarlægir ekki þessa undantekningu. Því getur staðbundin prófun tengst beint þótt beiðni til opinbers hýsilheitis noti milliþjóninn eins og búist er við.
Reglan snýst um viðtökustað beiðninnar. Hún hindrar ekki notkun milliþjónshlustara sem sjálfur hefur vistfangið 127.0.0.1.
Skoðaðu valbúnaðinn án þess að senda beiðni
package main
import (
"fmt"
"net/http"
"net/url"
)
func main() {
fixed, _ := url.Parse("http://203.0.113.10:8080")
for _, target := range []string{
"http://localhost:8000/",
"http://127.0.0.1:8000/",
"http://example.com/",
} {
request, _ := http.NewRequest("GET", target, nil)
discovered, err := http.ProxyFromEnvironment(request)
explicit, _ := http.ProxyURL(fixed)(request)
fmt.Println(target, discovered, explicit, err)
}
}
Ef þú vilt sjá samanburðinn við umhverfið skaltu keyra forritið með milliþjónsbreytur stilltar fyrir ferlið. Forritið metur aðeins valbúnaðinn; það tengist hvorki milliþjóninum í skjölunum né neinum viðtökustaðanna.
Greining úr umhverfi og skýrt val fylgja mismunandi reglum
ProxyFromEnvironment tekur mið af skema viðtökustaðar, umhverfisstillingum og hjáleiðarreglum, þar á meðal sérstakri loopback-meðhöndlun. ProxyURL skilar tilgreindri slóð milliþjóns fyrir hverja beiðni sem er send til þess valbúnaðar.
Því getur sérstakt transport með skýrt ProxyURL sent beiðni til staðbundins viðtökustaðar í gegnum milliþjón. Það er aðeins gagnlegt ef milliþjónninn getur með lögmætum hætti náð til umbeðins viðtökustaðar. localhost fjarlægs milliþjóns er ekki localhost fartölvunnar þinnar, svo þvinguð leið er ekki sjálfkrafa gagnleg tengiprófun.
Athugaðu áður en ferlið hefur sett umhverfið í skyndiminni
Umhverfisstillingar milliþjóns í staðlaða net/http eru settar í skyndiminni eftir fyrstu notkun. Að breyta umhverfisbreytu síðar í sama keyrandi forriti er ekki áreiðanleg leið til að endurtaka prófun með ferskum stillingum. Ræstu nýtt ferli með fyrirhuguðum gildum eða tilgreindu valbúnað sem þú stýrir sjálfur.
Þessi loopback-hegðun á við um staðlaðan milliþjónsvalbúnað Go 1.27.3. Önnur mál og HTTP-biðlar geta notað aðrar leiðarreglur fyrir localhost.