代理配置
更新时间:
在软件开发中,代理就像是一个“中间人”,它帮我们控制对某个功能或资源的访问。使用代理可以实现权限检查、记录操作日志、缓存数据、延迟加载等功能,而不用改动原来的代码。这样可以让程序更安全、运行更快,也更容易维护和扩展。本文为您介绍V2.0 PHP SDK代理的配置方式。
代理类型
在V2.0 PHP SDK中,仅支持HTTP代理。可通过httpProxy、httpsProxy和noProxy参数进行设置:
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代理配置实践。
该文章对您有帮助吗?