All Products
Search
Document Center

Alibaba Cloud SDK:Konfigurasi proxy HTTP

Last Updated:Jun 22, 2026

Jika aplikasi Anda tidak dapat memanggil OpenAPI karena pembatasan jaringan—misalnya, saat diterapkan di jaringan pribadi atau terisolasi oleh firewall—gunakan server proxy untuk mengakses jaringan publik. Alibaba Cloud SDK mendukung konfigurasi proxy penuh untuk HTTP dan HTTPS. Dengan mengatur alamat, port, dan parameter otentikasi proxy, Anda dapat mengarahkan permintaan OpenAPI melalui proxy. Topik ini menggunakan Tengine sebagai contoh untuk menunjukkan cara memanggil OpenAPI melalui proxy dengan SDK.

Contoh skenario

Misalnya, jika aplikasi Anda berada di jaringan pribadi dan harus mengakses jaringan publik melalui server proxy, Anda dapat mensimulasikan lingkungan ini dengan Instance ECS berikut dalam VPC:

  • Instance ECS A: Menjalankan aplikasi. Instans ini tidak dapat mengakses jaringan publik secara langsung dan hanya dapat mengakses sumber daya dalam VPC (IP privat: 10.0.0.115).

  • Instance ECS B: Berperan sebagai server proxy. Instans ini dapat mengakses jaringan publik dan berada dalam VPC yang sama dengan Instance ECS A (IP privat: 10.0.0.112).

    Catatan

    Jika Instans A dan B tidak berada dalam VPC yang sama, Anda dapat mengaktifkan konektivitas jaringan pribadi dengan menggunakan vpc peering connection atau enterprise edition transit router.

Siapkan server proxy

Pada contoh ini, Tengine digunakan sebagai server proxy dan diterapkan pada Instance ECS B.

Instal Tengine

  1. Unduh dan ekstrak paketnya.

    wget https://tengine.taobao.org/download/tengine-3.1.0.tar.gz
    tar zxvf tengine-3.1.0.tar.gz
    
  2. Perbarui paket sistem.

    Alibaba Cloud Linux/CentOS

    sudo yum update -y
    

    Ubuntu/Debian

    sudo apt-get update 
    sudo apt-get upgrade -y
    
  3. Instal dependensi yang diperlukan.

    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. Buat dan instal 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. Jalankan Tengine.

    Jalankan perintah berikut untuk menemukan path executable Tengine. Misalnya, path tersebut mungkin /root/tengine-3.1.0/objs/nginx.

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

    Jalankan Tengine dengan menjalankan executable-nya:

    sudo /root/tengine-3.1.0/objs/nginx
  6. Verifikasi bahwa Tengine telah berhasil dijalankan.

    # Periksa apakah proses Tengine ada.
    ps aux | grep nginx

Konfigurasi proxy HTTP dan HTTPS

  1. Jalankan perintah berikut untuk mengedit file konfigurasi Tengine.

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

    Dalam file konfigurasi, tambahkan konten berikut ke modul http:

    Peringatan

    Konfigurasi berikut hanya untuk referensi. Untuk beban kerja produksi, sesuaikan pengaturan proxy dengan skenario spesifik Anda.

        # HTTPS proxy
        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 resolver used by forward proxying
    	# forward proxy for CONNECT request
            proxy_connect;
            proxy_connect_allow            443 563;
            proxy_connect_connect_timeout  10s;
            proxy_connect_read_timeout     10s;
            proxy_connect_send_timeout     10s;
            # forward proxy for non-CONNECT request
            location / {
                proxy_pass $scheme://$http_host$request_uri;
            }
        }
        # HTTP proxy
        server {
            listen 8088;
            location / {
                proxy_pass $scheme://$http_host$request_uri;
            }
        }

    Setelah menambahkan konten tersebut, simpan file-nya.

  2. Muat ulang Tengine.

    # Hentikan Tengine
    /usr/local/nginx/sbin/nginx -s stop
    # Terapkan konfigurasi
    /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    # Muat ulang Tengine
    /usr/local/nginx/sbin/nginx -s reload

Panggil API menggunakan proxy SDK

Terapkan kode aplikasi Anda pada Instance ECS A. Kode contoh berikut hanya untuk pengujian.

# 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', # Protokol harus konsisten dengan jenis proxy. Gunakan 'https' untuk proxy HTTPS dan 'http' untuk proxy HTTP.
)
ecs_client = EcsClient(config)
runtime_options = RuntimeOptions(
    # http_proxy='http://10.0.0.112:8088', # Proxy HTTP: alamat IP dan port server proxy.
    https_proxy='http://10.0.0.112:8089'  # Proxy HTTPS: alamat IP dan port server proxy.
)
request = DescribeRegionsRequest(
    accept_language='en-US',
)
response = ecs_client.describe_regions_with_options(request, runtime_options)
print(response.body)

Output berikut dikembalikan:

{'headers': {'server': 'nginx/1.24.0 (Ubuntu)', 'date': 'Mon, 26 May 2025 10:04:19 GMT', 'content-type': 'application/json;charset=utf-8', 'transfer-encoding': 'chunked', 'connection': 'keep-alive', 'vary': 'Accept-Encoding, Accept-Encoding', 'access-control-allow-origin': '*', 'access-control-expose-headers': '*', 'x-acs-request-id': '39B6068B-E4F3-5FC4-3817-ED3D62BAEFCA', 'x-acs-trace-id': 'aa08b2d7a0f35d1f054164675f23cc98', 'statusCode': 200, 'body': {'Regions': {'Region': [{'LocalName': 'China (Qingdao)', 'RegionEndpoint': 'ecs.cn-qingdao.aliyuncs.com', 'RegionId': 'cn-qingdao'}, {'LocalName': 'China (Beijing)', 'RegionEndpoint': 'ecs.cn-beijing.aliyuncs.com', 'RegionId': 'cn-beijing'}, {'LocalName': 'China (Zhangjiakou)', 'RegionEndpoint': 'ecs.cn-zhangjiakou.aliyuncs.com', 'RegionId': 'cn-zhangjiakou'}, {'LocalName': 'China (Hohhot)', 'RegionEndpoint': 'ecs.cn-huhehaote.aliyuncs.com', 'RegionId': 'cn-huhehaote'}, {'LocalName': 'China (Ulanqab)', 'RegionEndpoint': 'ecs.cn-wulanchabu.aliyuncs.com', 'RegionId': 'cn-wulanchabu'}, {'LocalName': 'China (Hangzhou)', 'RegionEndpoint': 'ecs.aliyuncs.com', 'RegionId': 'cn-hangzhou'}, {'LocalName': 'China (Shanghai)', 'RegionEndpoint': 'ecs.cn-shanghai.aliyuncs.com', 'RegionId': 'cn-shanghai'}, {'LocalName': 'China (Nanjing - Local Region)', 'RegionEndpoint': 'ecs.cn-nanjing.aliyuncs.com', 'RegionId': 'cn-nanjing'}, {'LocalName': 'China (Shenzhen)', 'RegionEndpoint': 'ecs.cn-shenzhen.aliyuncs.com', 'RegionId': 'cn-shenzhen'}, {'LocalName': 'China (Heyuan)', 'RegionEndpoint': 'ecs.cn-heyuan.aliyuncs.com', 'RegionId': 'cn-heyuan'}, {'LocalName': 'China (Guangzhou)', 'RegionEndpoint': 'ecs.cn-guangzhou.aliyuncs.com', 'RegionId': 'cn-guangzhou'}, {'LocalName': 'China (Fuzhou – Local Region)', 'RegionEndpoint': 'ecs.cn-fuzhou.aliyuncs.com', 'RegionId': 'cn-fuzhou'}, {'LocalName': 'China (Wuhan – Local Region)', 'RegionEndpoint': 'ecs.cn-wuhan-lr.aliyuncs.com', 'RegionId': 'cn-wuhan-lr'}, {'LocalName': 'China (Chengdu)', 'RegionEndpoint': 'ecs.cn-chengdu.aliyuncs.com', 'RegionId': 'cn-chengdu'}, {'LocalName': 'China (Hong Kong)', 'RegionEndpoint': 'ecs.cn-hongkong.aliyuncs.com', 'RegionId': 'cn-hongkong'}, {'LocalName': 'Japan (Tokyo)', 'RegionEndpoint': 'ecs.ap-northeast-1.aliyuncs.com', 'RegionId': 'ap-northeast-1'}, {'LocalName': 'South Korea (Seoul)', 'RegionEndpoint': 'ecs.ap-northeast-2.aliyuncs.com', 'RegionId': 'ap-northeast-2'}, {'LocalName': 'Singapore', 'RegionEndpoint': 'ecs.ap-southeast-1.aliyuncs.com', 'RegionId': 'ap-southeast-1'}, {'LocalName': 'Malaysia (Kuala Lumpur)', 'RegionEndpoint': 'ecs.ap-southeast-3.aliyuncs.com', 'RegionId': 'ap-southeast-3'}, {'LocalName': 'Philippines (Manila)', 'RegionEndpoint': 'ecs.ap-southeast-6.aliyuncs.com', 'RegionId': 'ap-southeast-6'}, {'LocalName': 'Indonesia (Jakarta)', 'RegionEndpoint': 'ecs.ap-southeast-5.aliyuncs.com', 'RegionId': 'ap-southeast-5'}, {'LocalName': 'Thailand (Bangkok)', 'RegionEndpoint': 'ecs.ap-southeast-7.aliyuncs.com', 'RegionId': 'ap-southeast-7'}, {'LocalName': 'US (Virginia)', 'RegionEndpoint': 'ecs.us-east-1.aliyuncs.com', 'RegionId': 'us-east-1'}, {'LocalName': 'US (Silicon Valley)', 'RegionEndpoint': 'ecs.us-west-1.aliyuncs.com', 'RegionId': 'us-west-1'}, {'LocalName': 'Mexico', 'RegionEndpoint': 'ecs.na-south-1.aliyuncs.com', 'RegionId': 'na-south-1'}, {'LocalName': 'UK (London)', 'RegionEndpoint': 'ecs.eu-west-1.aliyuncs.com', 'RegionId': 'eu-west-1'}, {'LocalName': 'UAE (Dubai)', 'RegionEndpoint': 'ecs.me-east-1.aliyuncs.com', 'RegionId': 'me-east-1'}, {'LocalName': 'Germany (Frankfurt)', 'RegionEndpoint': 'ecs.eu-central-1.aliyuncs.com', 'RegionId': 'eu-central-1'}]}, 'RequestId': 'F90A5B33-FE86-55EF-B453-052AD7B0440F'}}}