Go에서 http.Client를 IP 주소에 바인딩
분산 컴퓨팅 영역에서는 소스 IP를 제어해야 하는 경우가 많습니다. HTTP 요청이 시작되는 주소입니다. 클라이언트 시스템에 여러 NIC가 있는 경우 이러한 세분성이 필수적일 수 있습니다.
다음 기본 HTTP 클라이언트 코드를 고려하세요.
<code class="go">package main import "net/http" func main() { webclient := &http.Client{} req, _ := http.NewRequest("GET", "http://www.google.com", nil) httpResponse, _ := webclient.Do(req) defer httpResponse.Body.Close() }</code>
이 클라이언트를 특정 NIC 또는 IP 주소에 바인딩하려면 Transport 필드를 수정해야 합니다. 우리는 사용자 정의 net.Dialer를 사용하는 사용자 정의 net.Transport를 사용할 것입니다. net.Dialer를 사용하면 나가는 연결에 대한 로컬 주소를 지정할 수 있습니다.
<code class="go">import ( "net" "net/http" ) func main() { localAddr, err := net.ResolveIPAddr("ip", "<my local address>") if err != nil { panic(err) } localTCPAddr := net.TCPAddr{ IP: localAddr.IP, } webclient := &http.Client{ Transport: &http.Transport{ Proxy: http.ProxyFromEnvironment, DialContext: (&net.Dialer{LocalAddr: &localTCPAddr}).DialContext, MaxIdleConns: 100, IdleConnTimeout: 90 * time.Second, TLSHandshakeTimeout: 10 * time.Second, ExpectContinueTimeout: 1 * time.Second, }, } }</code>
이 수정을 통해 HTTP 클라이언트는 이제 지정된 IP 주소에 바인딩되어 나가는 모든 요청이 시작되도록 합니다. 원하는 NIC에서.
위 내용은 Go HTTP 클라이언트를 특정 IP 주소에 어떻게 바인딩할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!