代理配置

更新时间:

在软件开发中,代理就像是一个“中间人”,它帮我们控制对某个功能或资源的访问。使用代理可以实现权限检查、记录操作日志、缓存数据、延迟加载等功能,而不用改动原来的代码。这样可以让程序更安全、运行更快,也更容易维护和扩展。本文为您介绍V2.0 Go SDK对于代理的配置方式。

代理类型

V2.0 Go SDK中,支持配置HTTP代理和SOCKS5代理。在实际使用中,建议选择其中一种代理使用。

代理类型

描述

HTTP代理

适用于大多数Web网络环境,可通过httpProxyhttpsProxynoProxy参数进行设置:

  • httpProxy用于指定代理服务器地址,仅对HTTP协议的请求生效。

  • httpsProxy用于指定代理服务器地址,仅对HTTPS协议的请求生效。

  • noProxy用于指定无需通过代理访问的地址列表,多个地址之间用逗号分隔,支持域名和IP地址格式。

SOCKS5代理

适用于复杂网络拓扑场景,可通过Socks5ProxySocks5NetWork参数进行设置:

  • Socks5Proxy用于指定代理服务器地址。

  • Socks5NetWork用于指定传输协议,如TCPUDP。

代理配置方式

说明

代理配置优先级:RuntimeOptions配置->Config配置->环境变量配置,优先级依次降低。

  • 通过运行时参数(RuntimeOptions)配置代理,仅对使用了该运行时参数的请求有效。

    示例代码如下:

    import (
    	util "github.com/alibabacloud-go/tea-utils/v2/service"
    	"github.com/alibabacloud-go/tea/tea"
    )
    
    // 省略其他代码,在调用API时设置RuntimeOptions
    func BuildRuntime() *util.RuntimeOptions {
    	runtime := &util.RuntimeOptions{
    		// HTTP代理,使用时需修改请求协议(Protocol),httpsProxy仅对https协议有效,httpProxy仅对http协议有效。
    		HttpProxy:  tea.String("http://127.0.0.1:9898"),
    		HttpsProxy: tea.String("http://user:password@127.0.0.1:8989"),
    		NoProxy:    tea.String("127.0.0.1,localhost"),
    
    		// SOCKS5代理
    		// Socks5Proxy:   tea.String("socks5://user:password@127.0.0.1:8989"),
    		// Socks5NetWork: tea.String("tcp"), 
    	}
    	return runtime
    }
    
  • 在初始化云产品客户端实例时,通过Config配置代理,对所有请求都生效。

    示例代码如下:

    import (
    	"os"
    
    	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    	"github.com/alibabacloud-go/tea/tea"
    )
    
    func BuildConfig() *openapi.Config {
    	config := &openapi.Config{
    		// 从环境变量获取RAM用户的AccessKey ID
    		AccessKeyId: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
    		// 从环境变量获取RAM用户的AccessKey Secret
    		AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
    		// 云资源所在的地域ID
    		RegionId: tea.String("cn-hangzhou"),
    		// HTTP代理配置参数与请求协议有关,httpsProxy仅对https协议有效,httpProxy仅对http协议有效。
    		Protocol: tea.String("https"),
    
    		// HTTP代理
    		HttpProxy:  tea.String("http://127.0.0.1:9898"),
    		HttpsProxy: tea.String("http://user:password@127.0.0.1:8989"),
    		NoProxy:    tea.String("127.0.0.1,localhost"),
    
    		// SOCKS5代理
    		// Socks5Proxy:   tea.String("socks5://user:password@127.0.0.1:8989"),
    		// Socks5NetWork: tea.String("tcp"),
    	}
    	return config
    }
    
    // 省略使用config初始化云产品客户端及调用API的代码
  • 通过环境变量配置。

    说明

    SOCKS5代理配置参数不支持使用环境变量。

    • 通过环境变量参数HTTP_PROXYhttp_proxy指定代理服务器地址。

    • 通过环境变量参数HTTPS_PROXYhttps_proxy指定代理服务器地址。

    • 通过环境变量参数NO_PROXYno_proxy指定无需通过代理访问的地址列表。

相关文档

代理配置相关实践文档,请参见HTTP代理配置实践