> 백엔드 개발 > Golang > Go HTTP 클라이언트를 특정 IP 주소에 어떻게 바인딩할 수 있나요?

Go HTTP 클라이언트를 특정 IP 주소에 어떻게 바인딩할 수 있나요?

Patricia Arquette
풀어 주다: 2024-10-29 12:24:29
원래의
929명이 탐색했습니다.

How Can I Bind a Go HTTP Client to a Specific IP Address?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿