All Products
Search
Document Center

ApsaraVideo VOD:Terapkan proxy permintaan

Last Updated:Aug 04, 2026

Dalam lingkungan jaringan yang kompleks, penyedia layanan jaringan mungkin melakukan hijacking terhadap nama domain default ApsaraVideo VOD (*.aliyuncs.com), sehingga menyebabkan kegagalan akses. Untuk meningkatkan tingkat keberhasilan dan stabilitas permintaan, terapkan layanan proxy khusus.

Selain skenario hijacking nama domain, alamat IP ApsaraVideo VOD ditetapkan secara dinamis dan dapat berubah sewaktu-waktu, sehingga rentang IP tetap tidak tersedia. Jika bisnis Anda harus mengonfigurasi daftar putih IP pada firewall server untuk memenuhi persyaratan keamanan—dan penggunaan nama domain saja tidak mencukupi—Anda dapat menerapkan proxy permintaan untuk mendapatkan alamat IP egress publik tetap, lalu membatasi akses hanya ke alamat IP tersebut. Anda dapat menggunakan solusi penerapan Function Compute (FC) yang dijelaskan di bawah ini atau menyiapkan reverse proxy NGINX sendiri.

Sebelum memulai

Contoh berikut menggunakan Alibaba Cloud Function Compute (FC) 3.0. Sebelum memulai, tinjau penagihan Function Compute.

Prosedur

Ikuti langkah-langkah berikut:

Catatan

Jika Konsol Function Compute (FC) Anda menampilkan antarmuka versi 2.0, klik Go to Function Compute 3.0 di pojok kanan atas untuk beralih ke konsol baru.

Langkah 1: Buat fungsi

  1. Buka halaman Functions di Konsol Function Compute (FC), lalu klik Create Function.

  2. Pilih Task Function dan klik Create Task Function. Konfigurasikan parameter berikut:

    • Untuk lingkungan runtime, pilih Built-in Runtimes > Python.

    • Pertahankan pengaturan default untuk parameter lain atau sesuaikan sesuai kebutuhan. Untuk tipe fungsi, pilih Task Function. Dalam konfigurasi elastis, atur tipe instans menjadi elastic instance dengan 0,35 vCPU, memori 512 MB, dan disk 512 MB. Atur jumlah minimum instans menjadi 0 (disarankan) dan konkurensi per instans menjadi 1. Untuk metode unggah kode, pilih Use sample code, lalu klik Create.

  3. Tinjau konfigurasi Anda, lalu klik Create.

Langkah 2: Terapkan kode

  1. Di halaman Function Details, klik tab Code.

  2. Klik Open WebIDE untuk membuka editor kode.

  3. Salin kode berikut ke dalam editor.

    Sample code

    import json
    import logging
    import http.client
    from urllib.parse import urlencode
    logging.basicConfig(level=logging.INFO)
    logger = logging.getLogger()
    def get_target_domain(region_id):
        # Jika region_id tidak ditentukan, gunakan nilai default.
        if not region_id:
            return "vod.cn-shanghai.aliyuncs.com"
        return f"vod.{region_id}.aliyuncs.com"
    def handler(event, context):
        try:
            # Jika event berupa bytes, dekode terlebih dahulu.
            if isinstance(event, bytes):
                event = json.loads(event.decode('utf-8'))
            # Dapatkan queryParameters.
            query_params = event['queryParameters']
            logger.info(f"queryParameters: {query_params}")
            # Dapatkan dan hapus parameter RegionId.
            region_id = query_params.pop('RegionId', None)
            target_domain = get_target_domain(region_id)
            # Bangun string kueri.
            query_string = urlencode(query_params)
            path = f"/?{query_string}"
            logger.info(f"Meneruskan ke: {target_domain}{path}")
            # Teruskan permintaan.
            conn = http.client.HTTPSConnection(target_domain)
            conn.request('GET', path)
            # Dapatkan respons.
            response = conn.getresponse()
            body = response.read()
            # Proses header respons untuk memastikan hanya ada satu header Access-Control-Allow-Origin.
            headers = dict(response.getheaders())
            # Atur satu header CORS.
            headers['Access-Control-Allow-Origin'] = '*'
            return {
                'statusCode': response.status,
                'headers': headers,
                'body': body.decode('utf-8')
            }
        except Exception as e:
            logger.error(f"Error: {str(e)}")
            return {
                'statusCode': 500,
                'body': str(e)
            }
        finally:
            if 'conn' in locals():
                conn.close()
  4. Kembali ke halaman Function Details, lalu klik Deploy Code.

Langkah 3: Buat pemicu

  1. Di halaman Function Details, klik tab Triggers.

  2. Klik Create Trigger, lalu pilih HTTP Trigger. Disarankan mengatur Authentication Method menjadi No Authentication serta mempertahankan pengaturan default untuk parameter lain atau menyesuaikannya sesuai kebutuhan. Masukkan nama pemicu, atur versi atau alias menjadi LATEST, dan pilih metode permintaan GET, POST, PUT, dan DELETE.

  3. Tinjau konfigurasi Anda, lalu klik OK.

Langkah 4: Verifikasi penerapan

  1. Di halaman manajemen pemicu di Konsol Function Compute, temukan HTTP trigger yang telah Anda buat dan salin public access address-nya. Akses alamat tersebut di browser untuk menguji konektivitas. Anda juga dapat mengatur properti customVodServer di player Anda ke alamat ini untuk mengakses layanan proxy.

  2. Koneksi yang berhasil menegaskan bahwa proxy permintaan telah diterapkan.

Dokumen terkait