You need to enable JavaScript to run this app.
导航

部署可信代理服务器

最近更新时间2023.06.15 10:30:10

首次发布时间2023.04.07 15:44:36

本文介绍如何在您的服务器上部署可信代理服务。

概述

可信代理是一个部署在用户侧的开源代理软件,能够处理并转发多云CDN的请求到云服务商。该软件允许您在使用多云CDN时,无需向多云CDN提供云服务商的真实 API 访问凭证。您将可信代理软件安装到受信任的服务器上,使该服务器充当代理服务器。代理服务器用于托管云服务商的真实 API 访问凭证(以下简称“真实凭证”),及配置与之对应的代理 API 访问凭证(以下简称“代理凭证”)。

可信代理服务启动后,您可使用代理凭证在多云CDN中添加云服务商账号。多云CDN使用代理凭证调用云服务商的 API,相关请求由代理服务器转发到云服务商。

工作原理

可信代理服务启动后,多云CDN和云服务商之间的请求过程如下:

  1. 多云CDN使用代理凭证加密并转发 API 调用请求到代理服务器。
  2. 代理服务器使用代理凭证验证多云CDN的请求。
  3. 多云CDN的请求验证通过后,代理服务器使用真实凭证加密并转发请求到云服务商。
  4. 代理服务器从云服务商处获得响应后,再转发响应到多云CDN。

alt

前提条件

  • 您已经订阅了多云CDN旗舰版套餐。相关操作,请参见开通多云CDN

    目前只有旗舰版套餐支持可信代理功能。

  • 您已经通过可信代理使用申请。

    可信代理目前仅向通过使用申请的火山引擎账号开放。您可以向多云CDN商务代表或通过工单提交使用申请。

  • 您已经准备好一台服务器用于部署可信代理服务。该服务器需满足以下要求:

    • 可通过互联网访问。
    • 有一个域名。

操作步骤

步骤1:下载安装包

您可以通过多云CDN控制台下载可信代理软件的安装包。可信代理软件要运行在互联网可访问的服务器上。您可以直接将安装包下载到服务器进行部署,或者先将安装包下载到本地计算机再上传到服务器进行部署。

可信代理安装包的下载步骤如下:

  1. 登录多云CDN控制台

  2. 在左侧导航栏,选择 云服务商 > 账号管理

  3. 账号管理 页面,单击 可信代理

    说明

    只有当前提条件已满足时,可信代理 按钮才会出现。

  4. 可信代理 面板,单击 去下载安装包

  5. 根据您的服务器环境,选择要下载的安装包版本。

    支持的版本有:

    • key-proxy_linux_386:适用于基于 i386 架构的 32 位计算机,Linux 操作系统。
    • key-proxy_linux_amd64:适用于基于 AMD64 架构的 64 位计算机,Linux 操作系统。
    • key-proxy_linux_arm64:适用于基于 ARM64 架构的 64 位计算机,Linux 操作系统。
    • key-proxy_darwin_amd64:适用于基于 AMD64 架构的 64 位计算机,Darwin 操作系统。
    • key-proxy_darwin_arm64:适用于基于 ARM64 架构的 64 位计算机,Darwin 操作系统。

步骤2:修改代理配置

假设您已经在服务器上下载了适用于 linux_386 环境的安装包。

在启动可信代理服务前,您需要修改代理配置。代理配置中定义了云服务商的 API 访问凭证(真实凭证、代理凭证)等信息。
代理配置的修改步骤如下:

  1. 解压缩可信代理安装包。

    解压缩安装包后,您将获得key-proxy_linux_386文件夹。该文件夹是可信代理的主文件夹。

  2. 打开key-proxy_linux_386文件夹下的config.yml配置文件,按照以下说明修改其中的Endpoints部分。

    # 代理配置
    Endpoints:
      - CloudAccountName: "<Cloud Account Name>" # 云服务商账号名称,不可重复
        Vendor: "<Vendor Name>" # 云服务商的代码
        Credentials:
          Proxy: # 代理凭证
            AccessKey: "<Proxy Access Key>" # 您自定义的代理 Access Key,用于多云CDN访问可信代理
            SecretKey: "<Proxy Secret Key>" # 您自定义的代理 Secret Key,用于多云CDN访问可信代理
          Real: # 真实凭证
            AccessKey: "<Real Access Key>" # 云服务商账号的真实 Access Key,用于可信代理访问云服务商
            SecretKey: "<Real Secret Key>" # 云服务商账号的真实 Secret Key,用于可信代理访问云服务商
    

    配置文件中的Endpoints部分表示代理配置,用于配置云服务商账号的相关信息。关于配置文件中其他部分的含义,请参见配置文件详情

    Endpoints结构包含以下参数:

    参数名称参数说明示例值

    CloudAccountName

    为要添加的账号设置一个名称。该名称只在多云CDN中使用。设置要求如下:

    • 仅允许使用英文大小写字母、数字、半角句号(.)、短划线(_)、连字符(-)。

    • 长度不超过 64 个字符。

    注意

    后续在多云CDN中添加账号时,您需要使用此处设置的账号名称。

    volcengine_account

    Vendor

    选择账号所属的云服务商。该参数有以下取值:

    • tencent:腾讯云

    • aliyun:阿里云

    • wangsu:网宿科技

    • baishan:白山云

    • huawei:华为云

    • ksyun:金山云

    • volcengine:火山引擎

    • ucloud:UCloud

    • akamai:Akamai

    • aws:Aws

    • baidu:百度智能云

    • qiniu:七牛云

    • jingdong:京东云

    volcengine

    Credentials.Real

    配置云服务商账号的真实凭证。
    不同云服务商账号需要配置的凭证参数不同。具体说明如下:

    • 除白山云、Akamai 以外的云服务商账号对应的凭证参数为:

      • AccessKey

      • SecretKey

    • 白山云账号对应的凭证参数为:

      • AccessToken
    • Akamai 账号对应的的凭证参数为:

      • AccessToken

      • ClientSecret

      • ClientToken

    参考配置示例

    Credentials.Proxy自定义代理凭证。代理凭证中包含的凭证参数与Credentials.Real中一致。参考配置示例

    配置示例
      假设您有一个火山引擎账号。账号对应的真实凭证是volc-realAKvolc-realSK。您为账号设置的账号名称是volcengine_account,自定义的代理凭证是volc-proxyAKvolc-proxySK
      那么,对应的Endpoints配置如下:

    # 代理配置
    Endpoints:
      - CloudAccountName: "volcengine_proxy"
        Vendor: "volcengine"
        Credentials:
          Real:
            AccessKey: "volc-realAK" 
            SecretKey: "volc-realSK"
          Proxy:
            AccessKey: "volc-proxyAK" 
            SecretKey: "volc-proxySK"
    

    在此基础上,您可以继续添加账号名称为baishan_account的白山云账号。对应的Endpoints配置如下:

    # 代理配置
    Endpoints:
      - CloudAccountName: "baishan_proxy"
        Vendor: "baishan"
        Credentials:
          Real:
            AccessToken: "baishan-realAccessToken" 
          Proxy:
            AccessToken: "baishan-proxyAccessToken" 
            
      - CloudAccountName: "volcengine_proxy"
        Vendor: "volcengine"
        Credentials:
          Real:
            AccessKey: "volc-realAK" 
            SecretKey: "volc-realSK"
          Proxy:
            AccessKey: "volc-proxyAK" 
            SecretKey: "volc-proxySK"
    

步骤3:启动服务

修改完配置文件后,您就可以在服务器上启动可信代理服务。

注意

可信代理服务默认运行在 HTTP 3888 端口。如需修改可信代理服务的运行端口,请参见配置文件详情

可信代理服务支持两种启动方式:

方式一(推荐):运行可执行文件

进入key-proxy_linux_386文件夹,运行其中的可执行文件(key-proxy)。

./key-proxy

方案二:编译源代码

前提条件
服务器上必须已经搭建好 Golang 开发环境。

编译并运行

  1. 进入key-proxy目录,执行编译命令。

    make build
    

    编译命令执行完成后,当前文件夹下会自动生成一个可执行文件。

  2. 运行自动生成的可执行文件。

    ./main
    

启动可信代理服务后,您就可以在多云CDN中使用代理凭证来添加云服务商账号。您需要向多云CDN提供代理服务的访问地址,以及您在代理配置(Endpoints)中定义的账号名称(CloudAccountName)和代理凭证(Credentials.Proxy)。具体操作,请参见添加可信代理账号

配置文件详情

可信代理的配置文件config.yml 内容如下。本章节主要介绍其中的HttpLog部分。
关于Endpoints部分的介绍,请参见步骤2:修改代理配置

# Http Server配置
Http:
  Address: ":3888" # 代理服务运行端口
  Tls:
    Enabled: false # 是否开启 HTTPS
    Address: ":443" # 开启 HTTPS 时,可信代理服务的运行端口
    CertFile: "./ssl.crt" # 证书文件的路径
    KeyFile: "./ssl.key" # 私钥文件的路径
# 默认Logger配置,使用自定义 Logger 时无效
Log:
  Output: ./output/log # 日志存放位置
  Level: debug # 日志等级。debug, info, warn, error
  MaxAge: 14 # 日志时效,单位: 天。超过有效期的日志将被清除。0 表示永久保留。
  MaxSize: 100 # 最大单个日志文件体积,单位: Mb。
# 拦截行为配置
Forbidden:
  ForbiddenAccountNotFound: false    # 禁止配置中不存在的云服务商账号
  ForbiddenProxyCredentialErr: false # 禁止错误的代理凭证
# 代理配置
Endpoints:
  - CloudAccountName: "<Cloud Account Name>" # 云服务商账号名称,不可重复
    Vendor: "<Vendor Name>" # 云服务商的代码
    Credentials:
      Proxy: # 代理凭证
        AccessKey: "<Proxy Access Key>" # 您自定义的代理 Access Key,用于多云CDN访问可信代理
        SecretKey: "<Proxy Secret Key>" # 您自定义的代理 Secret Key,用于多云CDN访问可信代理
      Real: # 真实凭证
        AccessKey: "<Real Access Key>" # 云服务商账号的真实 Access Key,用于可信代理访问云服务商
        SecretKey: "<Real Secret Key>" # 云服务商账号的真实 Secret Key,用于可信代理访问云服务商

TLS 配置

可信代理服务默认运行在 3888 端口。您可以为可信代理服务启用 HTTPS。
启用 HTTPS 的配置步骤如下:

  1. 将代理服务器的 TLS 证书上传到可信代理服务的主目录(key-proxy_linux_386)。

    如以下文件树,ssl.crt表示证书文件、ssl.key表示证书私钥,它们与config.yml位于同一个目录。

    .
    ├── ./
    ├── ../
    ├── config.yml
    ├── key-proxy
    ├── output/
    ├── ssl.crt
    └── ssl.key
    
  2. 修改config.yml 配置文件中的Http部分。

    您需要将Enabled的值设置为true并将CertFileKeyFile的值分别设置为证书文件和私钥文件的路径。

    # 配置文件
    Http:
      Address: ":" # 代理服务运行地址(HTTPS 启用后,该设置会被忽略)
      Tls:
        Enabled: true # 是否开启 HTTPS
        Address: ":443" # 开启 HTTPS 时,可信代理服务的运行端口
        CertFile: "./ssl.crt" # 证书文件的路径
        KeyFile: "./ssl.key" # 私钥文件的路径
    # ....
    

日志配置

可信代理服务在运行过程中会产生运行日志。

  • 日志文件名以key-proxy为前缀(如key-proxy.log)。
  • 在默认配置中,日志均存放在output/log文件夹中。您可以在配置文件中修改日志存放文件夹的位置。
  • 可信代理服务的日志采用滚动存储机制。当写入的日志达到一定条件(如体积限制)时,已有的日志文件会自动归档(归档时文件会被重命名),同时一个新的日志文件会被创建用于继续记录日志。为避免日志占用过多的磁盘空间,日志会在指定的过期时间后被自动删除。

日志配置位于config.yml 配置文件中的Log部分,具体包含以下参数。

参数名称参数说明
Output日志的存放位置。默认为./output/log

Level

要记录的日志的等级。低于该等级的日志不会被记录。
该参数有以下取值:debuginfowarnerror。默认值:debug

MaxAge

日志的最长存储天数。超过期限的日志将被自动清除。
默认值:14。0 表示永久保留。

MaxSize单个日志文件的最大大小。单位:MB。默认值:100。

拦截行为配置

可信代理服务启动后,多云CDN向云服务商发送的所有请求都由可信代理转发。除了可以转发通过正确代理凭证发送的请求,可信代理默认也可以转发其他请求。主要包括以下两种情况:

  • 多云CDN向某个未配置代理的云服务商发送了请求。
    可信代理无法验证该请求,但会直接将请求转发给云服务商。这表示您可以只为部分云服务商启用可信代理。对于没有启用可信代理的云服务商,您仍可以使用真实的访问凭证来调用它们的服务。

  • 多云CDN用于发送请求的凭证与可信代理中配置的代理凭证不匹配。
    可信代理无法验证该请求,但会直接将请求转发到云服务商。

    • 如果多云CDN使用真实凭证发起请求,该请求将被直接转发给云服务商。
    • 如果多云CDN使用的既不是代理凭证,也不是真实凭证,则该请求会被云服务商拒绝。

您可以通过以下参数修改上述默认配置。

参数名称参数说明
ForbiddenAccountNotFound该参数的值默认为 false。如果您需要拦截多云CDN向未配置代理的云服务商发送请求,可将该参数值修改为 true
ForbiddenProxyCredentialErr该参数的值默认为 false。如果您需要拦截通过不匹配的代理凭证发送的请求,可将该参数值修改为 true