すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud SDK:HTTP プロキシを構成する

最終更新日:Jul 05, 2025

アプリケーションが内部ネットワークやファイアウォールによる隔離などの制限されたネットワーク環境のために API 操作を呼び出すことができない場合は、プロキシサーバーを使用してアプリケーションが外部ネットワークにアクセスできるようにすることができます。 Alibaba Cloud SDK は完全なプロキシ構成を提供し、HTTP および HTTPS プロトコルに柔軟に適応できます。 プロキシサーバーのプロキシアドレス、ポート、および認証パラメーターを構成した後、プロキシが API リクエストを転送できるようにすることができます。 このトピックでは、Tengine プロキシを構成し、Tengine SDK を使用して API 操作を呼び出す方法について説明します。

サンプルシナリオ

アプリケーションが内部ネットワークにデプロイされており、アプリケーションがインターネットにアクセスできるようにプロキシサーバーをデプロイする必要があるとします。 次の例では、仮想プライベートクラウド(VPC)にデプロイされている Elastic Compute Service(ECS)インスタンスが使用されます。

  • ECS インスタンス A:アプリケーションは VPC にデプロイされており、内部ネットワークのリソースにアクセスできますが、インターネットにはアクセスできません。 プライベート IP アドレスは 10.0.0.115 です。

  • ECS インスタンス B:インターネットへのアクセスを提供するプロキシサーバーとして機能します。 ECS インスタンス B は、ECS インスタンス A と同じ VPC にあります。 プライベート IP アドレスは 10.0.0.112 です。

    説明

    インスタンス A とインスタンス B が異なる VPC にある場合は、VPC ピアリング接続またはエンタープライズ版トランジットルーターを作成して、VPC 間通信を確立できます。

プロキシサーバーをデプロイする

この例では、Tengine サーバーがプロキシサーバーとして使用され、ECS インスタンス B にデプロイされます。

Tengine をダウンロードしてインストールする

  1. パッケージをダウンロードして解凍します。

    wget https://tengine.taobao.org/download/tengine-3.1.0.tar.gz
    tar zxvf tengine-3.1.0.tar.gz
    
  2. 依存関係ライブラリを更新します。

    Alibaba Cloud Linux/CentOS

    sudo yum update -y
    

    Ubuntu/Debian

    sudo apt-get update 
    sudo apt-get upgrade -y
    
  3. 依存関係をインストールします。

    Alibaba Cloud Linux/CentOS

    sudo yum install pcre pcre-devel openssl openssl-devel zlib-devel -y
    sudo yum groupinstall "Development Tools" -y
    

    Ubuntu/Debian

    sudo apt-get install libpcre3 libpcre3-dev zlib1g-dev openssl libssl-dev build-essential -y 
    
  4. ファイルをコンパイルして Tengine をインストールします。

    cd tengine-3.1.0
    ./configure --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --add-module=./modules/ngx_http_proxy_connect_module
    make && make install
  5. Tengine プロセスを開始します。

    次のコマンドを実行して、Tengine 実行可能ファイルの場所を照会します。例:/root/tengine-3.1.0/objs/nginx

    find / -name nginx 2>/dev/null | grep tengine

    Tengine 実行可能ファイルを実行して、Tengine を起動します。

    sudo /root/tengine-3.1.0/objs/nginx
  6. Tengine が起動しているかどうかを確認します。

    # Tengine プロセスが存在するかどうかを確認します。
    ps aux | grep nginx

HTTP または HTTPS プロキシを構成する

  1. 次のコマンドを実行して、Tengine 構成ファイルを変更します。

    vim /usr/local/nginx/conf/nginx.conf

    構成ファイルの http モジュールに次のコンテンツを追加します。

    警告

    次のサンプルコードは参照用です。 実際のシナリオに基づいて構成を調整してください。

        # HTTPS プロキシ
        server {
            listen 8089;
            access_log  /var/log/host.access.log;
            access_log  "pipe:rollback /var/log/host.access_log interval=1d baknum=7 maxsize=2G";
            # 転送プロキシで使用される DNS リゾルバー
    	# CONNECT リクエストの転送プロキシ
            proxy_connect;
            proxy_connect_allow            443 563;
            proxy_connect_connect_timeout  10s;
            proxy_connect_read_timeout     10s;
            proxy_connect_send_timeout     10s;
     
            # CONNECT 以外のリクエストの転送プロキシ
            location / {
                proxy_pass $scheme://$http_host$request_uri;
            }
        }
     
        # HTTP プロキシ
        server {
            listen 8088;
            location / {
                proxy_pass $scheme://$http_host$request_uri;
            }
        }

    コンテンツを追加した後、ファイルを保存します。

  2. Tengine を再読み込みします。

    # Tengine を停止します。
    /usr/local/nginx/sbin/nginx -s stop
    # 構成を有効にします。
    /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    # Tengine を再起動します。
    /usr/local/nginx/sbin/nginx -s reload

SDK を使用してプロキシサーバー経由で API を呼び出す

ECS インスタンス A にビジネスコードをデプロイします。次のサンプルコードは参照用です。

# pip install alibabacloud_ecs20140526
import os

from alibabacloud_ecs20140526.client import Client as EcsClient
from alibabacloud_ecs20140526.models import DescribeRegionsRequest
from alibabacloud_tea_openapi.models import Config
from alibabacloud_tea_util.models import RuntimeOptions

config = Config(
    access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
    access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
    endpoint='ecs-cn-hangzhou.aliyuncs.com',
    protocol='https', # プロキシと同じプロトコルを使用します。 HTTP プロキシを使用する場合は、値を http に設定します。 HTTPS プロキシを使用する場合は、値を https に設定します。
)
ecs_client = EcsClient(config)

runtime_options = RuntimeOptions(
    # http_proxy='http://10.0.0.112:8088', # HTTP プロキシの IP アドレスとポート。
    https_proxy='http://10.0.0.112:8089'  # HTTPS プロキシの IP アドレスとポート。
)
request = DescribeRegionsRequest(
    accept_language='en-US',
)
response = ecs_client.describe_regions_with_options(request, runtime_options)
print(response.body)

期待される応答:

image