Jika aplikasi Anda tidak dapat memanggil operasi API karena lingkungan jaringan yang terbatas, seperti jaringan internal atau isolasi firewall, Anda dapat menggunakan server proxy untuk mengaktifkan akses ke jaringan eksternal. Alibaba Cloud SDK menyediakan konfigurasi proxy lengkap dan mendukung protokol HTTP serta HTTPS secara fleksibel. Setelah mengonfigurasi alamat proxy, port, dan parameter autentikasi dari server proxy, Anda dapat mengaktifkan proxy untuk meneruskan permintaan API. Topik ini menjelaskan cara mengonfigurasi proxy Tengine dan menggunakan Tengine SDK untuk memanggil operasi API.
Skenario contoh
Misalkan aplikasi Anda diterapkan di jaringan internal, dan Anda perlu menerapkan server proxy untuk memungkinkan aplikasi mengakses Internet. Dalam contoh berikut, instance Elastic Compute Service (ECS) yang diterapkan di virtual private clouds (VPCs) digunakan.
Instance ECS A: Aplikasi diterapkan di VPC dan memiliki akses ke sumber daya di jaringan internal, tetapi tidak memiliki akses Internet. Alamat IP privat adalah 10.0.0.115.
Instance ECS B: Berfungsi sebagai server proxy yang menyediakan akses ke Internet. Instance ECS B berada di VPC yang sama dengan Instance ECS A. Alamat IP privat adalah 10.0.0.112.
CatatanJika Instance A dan Instance B berada di VPC yang berbeda, Anda dapat membuat koneksi peering VPC atau Router transit edisi perusahaan untuk menetapkan komunikasi VPC-to-VPC.
Terapkan server proxy
Dalam contoh ini, server Tengine digunakan sebagai server proxy dan diterapkan pada Instance ECS B.
Unduh dan Instal Tengine
Unduh dan dekompresi paket.
wget https://tengine.taobao.org/download/tengine-3.1.0.tar.gz tar zxvf tengine-3.1.0.tar.gzPerbarui pustaka dependensi.
Alibaba Cloud Linux/CentOS
sudo yum update -yUbuntu/Debian
sudo apt-get update sudo apt-get upgrade -yInstal dependensi.
Alibaba Cloud Linux/CentOS
sudo yum install pcre pcre-devel openssl openssl-devel zlib-devel -y sudo yum groupinstall "Development Tools" -yUbuntu/Debian
sudo apt-get install libpcre3 libpcre3-dev zlib1g-dev openssl libssl-dev build-essential -yKompilasi file 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 installMulai proses Tengine.
Jalankan perintah berikut untuk menanyakan lokasi file eksekusi Tengine, misalnya,
/root/tengine-3.1.0/objs/nginx:find / -name nginx 2>/dev/null | grep tengineJalankan file eksekusi Tengine untuk memulai Tengine:
sudo /root/tengine-3.1.0/objs/nginxPeriksa apakah Tengine telah dimulai.
# Periksa apakah proses Tengine ada. ps aux | grep nginx
Konfigurasikan proxy HTTP atau HTTPS
Jalankan perintah berikut untuk memodifikasi file konfigurasi Tengine:
vim /usr/local/nginx/conf/nginx.confTambahkan konten berikut ke modul
httpdalam file konfigurasi:PeringatanKode sampel berikut hanya untuk referensi. Sesuaikan konfigurasi berdasarkan skenario aktual.
# Proxy 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 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; } } # Proxy HTTP server { listen 8088; location / { proxy_pass $scheme://$http_host$request_uri; } }Simpan file setelah menambahkan konten.
Muat ulang Tengine.
# Hentikan Tengine. /usr/local/nginx/sbin/nginx -s stop # Buat konfigurasi berlaku. /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf # Mulai ulang Tengine /usr/local/nginx/sbin/nginx -s reload
Gunakan SDK untuk memanggil API melalui server proxy.
Terapkan kode bisnis pada Instance ECS A. Kode sampel berikut hanya untuk referensi.
# 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', # Gunakan protokol yang sama dengan proxy. Jika Anda menggunakan proxy HTTP, atur nilainya menjadi http. Jika Anda menggunakan proxy HTTPS, atur nilainya menjadi https.
)
ecs_client = EcsClient(config)
runtime_options = RuntimeOptions(
# http_proxy='http://10.0.0.112:8088', # Alamat IP dan port dari proxy HTTP.
https_proxy='http://10.0.0.112:8089' # Alamat IP dan port dari proxy HTTPS.
)
request = DescribeRegionsRequest(
accept_language='en-US',
)
response = ecs_client.describe_regions_with_options(request, runtime_options)
print(response.body)
Tanggapan yang diharapkan:
