Reverse proxy Nginx pada instance ECS memungkinkan penerusan URL HTTPS dan pemetaan port—dua kemampuan yang tidak didukung secara native oleh Alibaba Cloud DNS. Untuk skenario standar, tambahkan rekaman DNS sebagai gantinya.
Kasus Penggunaan
Alibaba Cloud DNS memiliki keterbatasan berikut:
-
Batasan protokol: Penerusan URL dari
HTTPSkeHTTPStidak didukung karena layanan DNS tidak dapat mengelola sertifikat SSL. -
Batasan port: DNS melakukan resolusi nama domain ke alamat IP, bukan ke port. Jika backend Anda berjalan pada port non-standar (misalnya, 3000), pengguna harus menambahkan port tersebut ke URL:
http://www.example.com:3000.
Arsitektur Solusi
-
Jalur asli: Klien melakukan resolusi nama domain melalui DNS dan terhubung langsung ke IP layanan backend.
-
Jalur baru: Dengan reverse proxy Nginx, permintaan mengalir melalui jalur berikut:
-
Klien melakukan resolusi nama domain melalui DNS, yang mengembalikan Alamat IP publik server Nginx.
-
Klien mengirim permintaan HTTP atau HTTPS ke Alamat IP publik ini.
-
Nginx mencocokkan header
Hostdengan aturan pengalihannya dan meneruskan permintaan ke layanan backend yang sesuai. -
Backend memproses permintaan dan mengembalikan respons melalui Nginx ke klien.
-
Prosedur
Tutorial ini menggunakan instance ECS yang menjalankan Alibaba Cloud Linux 3. Jika Nginx sudah dideploy, lewati ke Langkah 3: Konfigurasikan Nginx untuk skenario berbeda.
Langkah 1: Siapkan lingkungan ECS
-
Buat instance ECS. Buat instans menggunakan wizard.
-
Sistem operasi: Pilih Alibaba Cloud Linux 3.
-
Jaringan: Tetapkan Alamat IP publik ke instance.
-
-
Tambahkan aturan masuk security group untuk mengizinkan TCP pada port
22,80, dan443.
Langkah 2: Instal dan jalankan Nginx
-
Login ke instance ECS menggunakan klien SSH.
-
Jalankan perintah berikut untuk menginstal Nginx.
sudo yum install -y nginx -
Jalankan Nginx dan aktifkan saat boot.
sudo systemctl start nginx sudo systemctl enable nginx -
Verifikasi bahwa Nginx sedang berjalan.
sudo systemctl status nginxJika statusnya
active (running), layanan telah berhasil dijalankan. -
Muat ulang konfigurasi Nginx tanpa memutus koneksi.
sudo systemctl reload nginx
Langkah 3: Konfigurasikan Nginx untuk skenario berbeda
File konfigurasi utama adalah /etc/nginx/nginx.conf. Pendekatan yang direkomendasikan adalah membuat file .conf terpisah untuk setiap situs di dalam direktori /etc/nginx/conf.d/.
Skenario 1: Penerusan URL HTTPS
Alibaba Cloud DNS tidak mendukung penerusan HTTPS-ke-HTTPS karena sertifikat SSL tidak dapat diunggah. Dengan Nginx, Anda dapat menginstal sertifikat SSL sendiri dan menentukan aturan pengalihan khusus.
-
Pengalihan URL (penerusan eksplisit)
Mengalihkan secara permanen
https://example.comkehttps://aliyun.com. Bilah alamat browser akan diperbarui ke URL baru. Tambahkan konfigurasi berikut ke/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 dari
https://example.comkehttps://aliyun.com. Bilah alamat browser tetap tidak berubah meskipun konten disajikan dari backend. Tambahkan konfigurasi berikut ke/etc/nginx/conf.d/proxy.conf:# Teruskan permintaan untuk 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 target proxy_pass http://aliyun.com; # Konfigurasi penting: Atur header permintaan Host ke nama domain layanan target agar backend dapat memproses permintaan dengan benar. proxy_set_header Host "aliyun.com"; # Teruskan alamat IP asli client untuk pencatatan log dan analisis di 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; } }
Skenario 2: Memetakan domain ke port tertentu
Mengarahkan lalu lintas dari port 80 ke aplikasi backend pada port non-standar seperti 3000, sehingga pengguna tidak perlu menentukan port di URL. Tambahkan konfigurasi berikut ke /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
proxy_pass http://127.0.0.1:3000;
# Teruskan header permintaan Host asli agar aplikasi backend dapat mengenali 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 Nginx dikonfigurasi, tambahkan rekaman DNS untuk domain yang dilayaninya.
-
Dapatkan nama domain. Jika belum memiliki, daftarkan di Alibaba Cloud Domain Names. Jika website di-host di Tiongkok daratan, lengkapi terlebih dahulu pendaftaran ICP.
-
Dapatkan Alamat IP publik instance ECS yang menjalankan Nginx.
Pada halaman Instances di Konsol ECS, temukan instance Anda dan periksa kolom IP Address.
-
Buka konsol Alibaba Cloud DNS - Public Zone dan temukan nama domain target Anda.
-
Tambahkan atau ubah rekaman DNS.
-
Jika belum ada rekaman DNS yang dikonfigurasi, tambahkan rekaman DNS. Buat Rekaman A untuk setiap nama domain yang dikonfigurasi di Nginx, seperti
example.com, dan arahkan ke Alamat IP publik instance ECS Anda. -
Jika rekaman DNS sudah ada, perbarui nilainya ke Alamat IP publik server Nginx. Perubahan DNS mungkin memerlukan waktu 5–10 menit untuk tersebar.
Pada panel Add Record, atur record type ke A -- Maps a domain name to an IPv4 address, host record ke
demo, Resolution Line ke Default, TTL ke 10 minutes, dan record value ke Alamat IP publik server Nginx.
-
Biaya dan Risiko
-
Biaya: Biaya utama berasal dari instance ECS. Harga bergantung pada spesifikasi instans, wilayah, dan metode penagihan. Nginx sendiri bersifat gratis dan open source.
-
Risiko dan maintenance: Anda bertanggung jawab atas pengoperasian reverse proxy, termasuk menerapkan patch keamanan, memantau kesehatan layanan, dan mencadangkan konfigurasi. Konfigurasi yang salah atau kelalaian dalam maintenance dapat menyebabkan gangguan atau kerentanan keamanan.
-
Rekomendasi produksi: Perkuat konfigurasi keamanan Nginx dan siapkan pemantauan serta analisis log.