代理配置

更新时间:

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

代理类型

V2.0 PHP SDK中,仅支持HTTP代理。可通过httpProxy、httpsProxynoProxy参数进行设置:

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

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

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

代理配置方式

说明

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

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

    示例代码如下:

    <?php
    
    require_once 'vendor/autoload.php';
    use AlibabaCloud\SDK\Ecs\V20140526\Ecs;
    use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
    use Darabonba\OpenApi\Models\Config;
    use AlibabaCloud\SDK\Ecs\V20140526\Models\DescribeInstancesRequest;
    
    class ProxyDemo
    {
    
        public static function main()
        {
            $config = new Config([
                "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
                "endpoint" => "ecs.cn-beijing.aliyuncs.com", // <endpoint>
                "protocol" => 'https', // 请求协议与HTTP代理配置参数有关,httpsProxy仅对https协议有效,httpProxy仅对http协议有效。
            ]);
            $client = new Ecs($config);
    
            // 运行时参数设置,仅对使用了该运行时参数的请求有效
            $runtime = new RuntimeOptions([
                "httpProxy" => "http://127.0.0.1:8080",
                "httpsProxy" => "https://username:password@proxyServer:port",
                "noProxy" => "127.0.0.1,localhost"
            ]);
            $describeInstancesRequest = new DescribeInstancesRequest([
                "regionId" => "cn-beijing"
            ]);
            $resp = $client->describeInstancesWithOptions($describeInstancesRequest, $runtime);
            var_dump($resp);
        }
    }
    ProxyDemo::main();
  • 在初始化云产品客户端实例时,通过Config配置代理,对所有请求都生效。

    示例代码如下:

    <?php
    
    require_once 'vendor/autoload.php';
    use AlibabaCloud\SDK\Ecs\V20140526\Ecs;
    use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
    use Darabonba\OpenApi\Models\Config;
    use AlibabaCloud\SDK\Ecs\V20140526\Models\DescribeInstancesRequest;
    
    class ProxyDemo
    {
    
        public static function main()
        {
            $config = new Config([
                "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
                "endpoint" => "ecs.cn-beijing.aliyuncs.com", // <endpoint>
                "protocol" => 'https', // 请求协议与HTTP代理配置参数有关,httpsProxy仅对https协议有效,httpProxy仅对http协议有效。
                // 代理设置
                "httpProxy" => "http://127.0.0.1:8080",
                "httpsProxy" => "https://username:password@proxyServer:port",
                "noProxy" => "127.0.0.1,localhost"
            ]);
            $client = new Ecs($config);
    
            $runtime = new RuntimeOptions([]);
            $describeInstancesRequest = new DescribeInstancesRequest([
                "regionId" => "cn-beijing"
            ]);
            $resp = $client->describeInstancesWithOptions($describeInstancesRequest, $runtime);
            var_dump($resp);
        }
    }
    ProxyDemo::main();

相关文档

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