全部产品
Search
文档中心

Alibaba Cloud DNS:Gunakan reverse proxy Nginx yang di-host sendiri untuk meneruskan permintaan HTTPS dan menyembunyikan port

更新时间:Dec 05, 2025

Dengan men-deploy reverse proxy Nginx pada instans Elastic Compute Service (ECS), Anda dapat mengontrol aturan pengalihan permintaan untuk mendukung fitur seperti Penerusan URL melalui protokol HTTPS dan proxy port. Solusi ini mengatasi keterbatasan Alibaba Cloud DNS, yang tidak mendukung Penerusan URL melalui HTTPS atau memungkinkan konfigurasi rekaman DNS untuk melakukan resolusi ke port tertentu. Untuk skenario resolusi DNS standar, Anda dapat menambahkan rekaman DNS.

Skenario

Konfigurasi resolusi Alibaba Cloud DNS memiliki keterbatasan dalam skenario tertentu:

  • Keterbatasan protokol: Fitur Penerusan URL Alibaba Cloud DNS tidak mendukung penerusan permintaan dari HTTPS ke HTTPS. Hal ini menyebabkan akses klien gagal.

  • Keterbatasan port: Protokol DNS standar menetapkan bahwa nama domain hanya dapat di-resolve ke alamat IP, bukan ke port tertentu. Jika aplikasi backend menggunakan port non-standar, seperti 3000, pengguna harus secara manual menambahkan nomor port ke URL untuk mengakses aplikasi tersebut, misalnya http://www.example.com:3000.

Arsitektur Solusi

  • Jalur asli: Klien menginisiasi permintaan akses menggunakan nama domain. DNS lokal melakukan permintaan rekursif untuk mengambil alamat IP layanan backend. Klien kemudian langsung mengakses layanan backend pada alamat IP tersebut.

  • Jalur baru: Setelah Anda men-deploy reverse proxy Nginx yang di-host sendiri, Nginx bertindak sebagai titik masuk lalu lintas dan meneruskan permintaan. Jalur akses keseluruhan adalah sebagai berikut:

    1. Klien menginisiasi permintaan akses menggunakan nama domain. DNS lokal melakukan permintaan rekursif. Permintaan ini akhirnya mengambil alamat IP publik server Nginx dari server DNS otoritatif.

    2. Klien mengirim permintaan HTTP/HTTPS ke alamat IP publik tersebut.

    3. Server Nginx menerima permintaan tersebut. Nginx kemudian menggunakan aturan pengalihan dalam file konfigurasinya untuk mem-proksi permintaan ke aplikasi backend yang sesuai. Aturan ini didasarkan pada header permintaan Host, yang berisi nama domain yang sedang diakses.

    4. Aplikasi backend memproses permintaan dan mengembalikan respons ke Nginx. Nginx kemudian mengirimkan respons akhir ke klien.

Langkah Implementasi

Topik ini menggunakan instans Elastic Compute Service (ECS) yang menjalankan sistem operasi Alibaba Cloud Linux 3 sebagai contoh untuk menunjukkan cara men-deploy dan mengonfigurasi Nginx. Jika Anda telah men-deploy Nginx, Anda dapat langsung menuju Langkah 3: Konfigurasi Nginx untuk skenario berbeda.

Langkah 1: Siapkan lingkungan ECS

  1. Buat instans ECS. Untuk informasi selengkapnya, lihat Buat instans ECS menggunakan wizard.

    • Sistem operasi: Pilih Alibaba Cloud Linux 3.

    • Jaringan: Pastikan alamat IP publik dialokasikan.

  2. Pada konfigurasi security group instans, tambahkan aturan masuk untuk mengizinkan lalu lintas pada port TCP 22, 80, dan 443. Port-port ini digunakan untuk koneksi remote Secure Shell (SSH) dan layanan web.

Langkah 2: Instal dan jalankan Nginx

  1. Gunakan klien SSH untuk login ke instans ECS.

  2. Jalankan perintah berikut untuk menginstal Nginx.

    sudo yum install -y nginx
  3. Jalankan layanan Nginx dan atur agar otomatis berjalan saat boot.

    sudo systemctl start nginx
    sudo systemctl enable nginx
  4. Periksa status layanan Nginx untuk memastikan layanan tersebut berjalan.

    sudo systemctl status nginx

    Jika statusnya active (running), berarti layanan berhasil dijalankan.

  5. Setelah Anda mengubah konfigurasi Nginx, jalankan perintah berikut untuk menerapkan perubahan. Perintah ini memuat ulang konfigurasi tanpa mengganggu koneksi yang sedang berjalan.

    sudo systemctl reload nginx

Langkah 3: Konfigurasi Nginx untuk skenario berbeda

File konfigurasi utama Nginx terletak di /etc/nginx/nginx.conf. Namun, praktik terbaik adalah membuat file .conf terpisah untuk konfigurasi setiap situs dan menyimpan file-file tersebut di folder /etc/nginx/conf.d/. Bagian berikut menyediakan contoh konfigurasi untuk skenario berbeda.

Skema 1: Penerusan URL untuk protokol HTTPS

Alibaba Cloud DNS tidak mendukung Penerusan URL dari HTTPS ke HTTPS. Hal ini karena Anda tidak dapat mengunggah Sertifikat SSL kustom ke layanan tersebut. Dengan instans Nginx yang di-host sendiri, Anda dapat mengonfigurasi Sertifikat SSL yang valid untuk nama domain sumber dan menyiapkan aturan Penerusan URL.

  • Pengalihan URL (penerusan eksplisit)

    Mengalihkan secara permanen akses dari https://example.com ke https://aliyun.com. Bilah alamat browser berubah ke alamat yang dialihkan. Tambahkan konten berikut ke file /etc/nginx/conf.d/redirect.conf:

    server {
        listen 443 ssl http2;
        server_name example.com;
    
        # Konfigurasikan sertifikat SSL dan kunci privat untuk nama domain sumber
        ssl_certificate /etc/nginx/certs/example.com.fullchain.pem;
        ssl_certificate_key /etc/nginx/certs/example.com.key;
    
        location / {
            return 301 https://aliyun.com$request_uri;
        }
    }
  • Reverse proxy (penerusan implisit)

    Meneruskan permintaan untuk situs https://example.com agar diproses oleh domain https://aliyun.com. Alamat di bilah browser tetap tidak berubah, tetapi kontennya disediakan oleh layanan backend yang berbeda. Tambahkan konten berikut ke file /etc/nginx/conf.d/proxy.conf:

    # Proxy akses ke example.com ke aliyun.com
    server {
        listen 443 ssl http2;
        server_name example.com;
    
        # Konfigurasikan sertifikat SSL dan kunci privat untuk nama domain sumber
        ssl_certificate /etc/nginx/certs/example.com.fullchain.pem;
        ssl_certificate_key /etc/nginx/certs/example.com.key;
    
        location / {
            # Teruskan permintaan ke server tujuan
            proxy_pass http://aliyun.com;
    
            # Konfigurasi penting: Atur header permintaan Host ke nama domain layanan tujuan agar backend dapat memproses permintaan dengan benar.
            proxy_set_header Host "aliyun.com";
            
            # Teruskan alamat IP asal client untuk pencatatan log dan analisis log layanan backend.
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    

Skema 2: Resolve nama domain ke port tertentu

Konfigurasi ini memungkinkan aplikasi yang berjalan pada port non-standar, seperti 3000, diakses melalui port standar 80. Hal ini mengatasi masalah bahwa rekaman A DNS tidak dapat menentukan port. Tambahkan konten berikut ke file /etc/nginx/conf.d/port_mapping.conf:

# Akses layanan pada port lokal 3000 melalui example.com
server {
    listen 80;
    server_name example.com;

    location / {
        # Teruskan permintaan ke port 3000 pada host lokal (localhost)
        proxy_pass http://127.0.0.1:3000;

        # Teruskan header permintaan Host asli agar aplikasi backend dapat mengidentifikasi nama domain yang diakses
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Langkah 4: Konfigurasikan resolusi DNS

Setelah Anda men-deploy dan mengonfigurasi layanan reverse proxy Nginx yang di-host sendiri, Anda harus mengonfigurasi resolusi DNS untuk layanan yang diproksi beserta nama domain terkaitnya.

  1. Dapatkan nama domain. Jika Anda belum memiliki nama domain, Anda dapat membelinya dari Alibaba Cloud Domain Names. Jika situs yang terkait dengan nama domain tersebut di-deploy di Daratan Tiongkok, Anda harus menyelesaikan Pendaftaran ICP terlebih dahulu.

  2. Dapatkan alamat IP publik server tempat reverse proxy Nginx di-deploy. Dalam contoh ini, ini adalah alamat IP publik instans ECS.

    image

  3. Buka Alibaba Cloud DNS - Zona Publik dan temukan nama domain target.

  4. Tambahkan atau ubah rekaman DNS.

    1. Jika Anda belum pernah mengonfigurasi rekaman DNS sebelumnya, tambahkan rekaman DNS. Buat rekaman A untuk setiap nama domain yang dikonfigurasi di Nginx, seperti example.com, dan arahkan rekaman tersebut ke alamat IP publik instans ECS.

    2. Jika rekaman DNS sudah ada, ubah nilainya menjadi alamat IP publik server Nginx. Catatan: Setelah Anda mengubah rekaman DNS, perubahan tersebut mungkin memerlukan waktu 5 hingga 10 menit untuk berlaku.

      image

Biaya dan Risiko

  • Komponen biaya: Biaya utama berasal dari instans ECS yang diperlukan untuk menjalankan Nginx. Biaya tersebut bergantung pada tipe instans, wilayah, dan metode penagihan yang Anda pilih. Nginx merupakan perangkat lunak open-source dan dapat digunakan secara gratis.

  • Risiko dan maintenance: Anda bertanggung jawab atas operasi dan maintenance (O&M) layanan reverse proxy yang di-host sendiri. Ini mencakup pembaruan rutin sistem operasi dan patch keamanan Nginx, pemantauan kesehatan layanan, serta pencadangan file konfigurasi. Konfigurasi yang tidak tepat atau kurangnya maintenance dapat menyebabkan gangguan layanan atau memperkenalkan kerentanan keamanan.

  • Rekomendasi lingkungan produksi: Untuk lingkungan produksi, kami merekomendasikan agar Anda memperkuat konfigurasi keamanan Nginx dan membangun sistem pemantauan serta analisis log.

FAQ

Apakah Alibaba Cloud DNS mendukung resolusi port?

Bagaimana cara mengarahkan nama domain ke situs lain?