Untuk mengakses aplikasi atau fungsi di Function Compute melalui nama domain tetap di lingkungan produksi atau untuk mencegah unduhan paksa saat mengakses Pemicu HTTP, bind nama domain kustom ke aplikasi atau fungsi tersebut.
Kasus penggunaan
Petakan nama domain kustom ke fungsi atau aplikasi dalam skenario berikut:
-
Anda telah memigrasikan aplikasi web ke Function Compute dan ingin mengaksesnya melalui nama domain yang sudah ada.
-
Anda membuat aplikasi web di Konsol Function Compute dan ingin menggunakan path berbeda dari domain yang sama untuk memicu fungsi yang berbeda.
-
Anda membuat aplikasi, seperti aplikasi Stable Diffusion, di Serverless Application Center Function Compute dan ingin mengaksesnya dengan nama domain statis.
Batasan
-
Saat mengikat nama domain kustom ke fungsi, Anda harus memilih wilayah fungsi tersebut.
-
Nama domain kustom bersifat case-sensitive. Anda harus memasukkan nama domain persis seperti yang tercantum dalam pendaftaran ICP-nya.
-
Nama domain wildcard dan standar didukung, tetapi nama domain dalam bahasa Mandarin tidak didukung.
Cara kerja
Prasyarat
-
Anda telah membuat fungsi atau aplikasi. Untuk informasi lebih lanjut, lihat Buat fungsi dan Buat aplikasi.
Mengikat nama domain kustom ke aplikasi juga akan mengikatnya ke fungsi terkait. Anda dapat menemukan resource fungsi yang dibuat secara otomatis ini di bagian Resource Information pada halaman Environment Details. Klik nama fungsi untuk membuka halaman detail fungsi.
-
Nama domain kustom Anda harus memiliki pendaftaran ICP dengan Alibaba Cloud sebagai penyedia layanan.
Ikuti instruksi pendaftaran ICP sesuai penyedia layanan domain Anda dan akun yang memilikinya.
-
Nama domain yang didaftarkan dengan Akun Alibaba Cloud saat ini
Login ke sistem Pendaftaran ICP Alibaba Cloud untuk menyelesaikan pendaftaran ICP untuk nama domain kustom.
-
Nama domain yang didaftarkan dengan akun Alibaba Cloud lain
Kami menyarankan agar Anda menggunakan akun Alibaba Cloud yang mendaftarkan domain tersebut untuk menyelesaikan pendaftaran ICP. Kemudian, login ke sistem Pendaftaran ICP Alibaba Cloud untuk menyelesaikan pendaftaran ICP untuk nama domain kustom.
-
Nama domain yang tidak didaftarkan dengan akun Alibaba Cloud
Jika penyedia layanan lain menangani pendaftaran ICP domain Anda, Anda harus memperbarui pendaftaran tersebut untuk menambahkan Alibaba Cloud sebagai penyedia layanan. Login ke sistem Pendaftaran ICP Alibaba Cloud untuk melakukannya.
Catatan-
Nama domain kustom yang diikat ke fungsi di wilayah China (Hong Kong) atau wilayah luar Tiongkok daratan tidak memerlukan pendaftaran ICP.
-
Jika Anda tidak yakin siapa registrar domain Anda, Anda dapat melakukan kueri WHOIS.
-
Untuk menentukan apakah nama domain terdaftar pada akun Alibaba Cloud Anda saat ini, periksa Konsol DNS Alibaba Cloud.
-
1. Tambahkan nama domain kustom
-
Login ke Konsol Function Compute. Di panel navigasi sebelah kiri, pilih . Pilih wilayah, lalu klik Add Custom Domain Name.
PentingSaat Anda memetakan nama domain kustom ke fungsi, nama domain kustom dan fungsi tersebut harus berada di wilayah yang sama.
-
Di halaman Add Custom Domain Name, masukkan nama domain kustom yang telah memiliki pendaftaran ICP dengan Alibaba Cloud. Didukung nama domain tunggal (misalnya,
www.aliyun.com) dan nama domain wildcard (misalnya,*.aliyun.com).Dapatkan Internet CNAME atau Internal CNAME, yang akan Anda gunakan pada langkah berikutnya untuk mengonfigurasi resolusi nama domain. Tabel berikut menjelaskan format CNAME.
Jenis CNAME
Format
Contoh
Internet CNAME
<account_id>.<region_id>.fc.aliyuncs.comJika ID akun Alibaba Cloud Anda adalah 1413397765**** dan fungsi atau aplikasi Anda berada di wilayah China (Hangzhou):
Internet CNAME-nya adalah
1413397765****.cn-hangzhou.fc.aliyuncs.com.Internal CNAME
<account_id>.<region_id>-internal.fc.aliyuncs.comInternal CNAME-nya adalah
1413397765****.cn-hangzhou-internal.fc.aliyuncs.com.
2. Konfigurasi resolusi nama domain
Login ke Konsol DNS Alibaba Cloud dan petakan nama domain ke CNAME Function Compute. Untuk informasi lebih lanjut, lihat Tambahkan Rekaman DNS.
Saat mengonfigurasi rekaman DNS, atur Record Value ke CNAME Function Compute dari langkah sebelumnya. Jika Anda ingin mengakses nama domain melalui internet, atur Record Value ke Internet CNAME Function Compute.
Saat mengonfigurasi rekaman DNS, atur Jenis Rekaman ke CNAME, masukkan @ untuk Hostname, dan atur Jalur Resolusi ke Default.
3. Selesaikan konfigurasi domain
Kembali ke halaman Add Custom Domain Name dari Langkah 1. Konfigurasikan opsi berikut dan klik Create.
3.1 Konfigurasi rute
Jika aplikasi Anda berisi beberapa fungsi, Anda dapat memetakan path permintaan berbeda untuk memicu fungsi yang berbeda. Untuk informasi lebih lanjut, lihat Aturan pencocokan path.
Jika Anda perlu menulis ulang URI permintaan yang cocok dengan path tertentu berdasarkan aturan, lihat Konfigurasi kebijakan rewrite (dalam pratinjau publik).
Pengaturan routing dikelola dalam tabel. Setiap aturan mencakup bidang Path, Nama Fungsi, Versi/Alias, dan Kebijakan Rewrite. Misalnya, Anda dapat memetakan path /test1 ke fungsi test-renwu, dan menggunakan /* sebagai path fallback yang dipetakan ke fungsi default. Anda dapat memilih LATEST sebagai versi untuk semua aturan.
3.2 (Opsional) Pengaturan HTTPS
Untuk mengaktifkan akses HTTPS untuk nama domain kustom, konfigurasikan parameter berikut.
|
Parameter |
Tindakan |
|
HTTPS |
Saat diaktifkan, nama domain kustom mendukung HTTP dan HTTPS. Saat dinonaktifkan, hanya mendukung HTTP. Catatan
Anda juga dapat memilih kotak centang Redirects HTTP Requests to HTTPS. Memilih opsi ini membatasi akses hanya ke HTTPS, dan Function Compute mengarahkan semua permintaan HTTP ke HTTPS. |
|
Certificate Type |
Pilih jenis sertifikat yang akan diunggah. Nilai yang valid:
Catatan
Sertifikat yang diunggah tidak boleh melebihi ukuran 20 KB, dan kunci sertifikat tidak boleh melebihi 4 KB. |
|
TLS Version |
Pilih versi protokol Transport Layer Security (TLS) untuk fungsi. Catatan
Setelah memilih versi TLS, Anda juga dapat memilih kotak centang Enable Support for TLS1.3 untuk mengaktifkan TLS 1.3. |
|
Cipher Suite |
Pilih paket sandi TLS. Jika Anda tidak mengonfigurasi parameter ini, semua paket sandi dipilih secara default. Nilai yang valid:
Penting
|
3.3 (Opsional) Pengaturan autentikasi
-
Tanpa Autentikasi: Tidak diperlukan autentikasi untuk permintaan HTTP. Akses anonim didukung, dan siapa pun dapat membuat permintaan HTTP untuk memanggil fungsi Anda.
-
Autentikasi Signature: Autentikasi signature dilakukan pada permintaan HTTP. Untuk informasi lebih lanjut, lihat Konfigurasi autentikasi signature untuk nama domain kustom.
-
Autentikasi Basic: Metode autentikasi HTTP standar. Anda mengonfigurasi username dan password di Konsol Function Compute. Klien harus menyertakan kredensial yang valid di header Authorization. Akses diberikan hanya jika informasi pengguna dalam permintaan cocok dengan username dan password yang dikonfigurasi. Untuk informasi lebih lanjut, lihat Konfigurasi autentikasi Basic untuk nama domain kustom.
-
Autentikasi JWT: Autentikasi JWT dilakukan pada permintaan HTTP untuk memastikan bahwa hanya klien dengan JWT yang valid yang dapat mengakses fungsi. Untuk informasi lebih lanjut, lihat Konfigurasi autentikasi JWT untuk nama domain kustom.
-
Autentikasi Bearer: Autentikasi Bearer dilakukan pada permintaan HTTP. Anda mengonfigurasi token yang diizinkan di Konsol Function Compute. Klien harus menyertakan token yang valid di header Authorization. Akses diberikan hanya jika token dalam permintaan cocok dengan token yang dikonfigurasi. Untuk informasi lebih lanjut, lihat Konfigurasi autentikasi Bearer untuk nama domain kustom.
3.4 (Opsional) Pengaturan Web Application Firewall
Saat diaktifkan, Web Application Firewall (WAF) memeriksa traffic ke fungsi Anda, menyaring permintaan serangan, dan meneruskan hanya traffic aman ke backend. Ini melindungi fungsi Anda dari serangan. Untuk informasi lebih lanjut, lihat Aktifkan Web Application Firewall.
3.5 (Opsional) Pengaturan CDN
Setelah Anda mengikat nama domain kustom ke aplikasi web, Anda dapat menggunakan nama domain kustom ini sebagai domain origin server, menambahkan nama domain yang dipercepat, lalu mengonfigurasi CNAME untuk nama domain yang dipercepat untuk mengaktifkan akselerasi CDN. Aplikasi yang dideploy di Function Compute digunakan sebagai origin server untuk menerbitkan konten origin ke edge node. Hal ini memungkinkan pengguna akhir mengambil konten yang dibutuhkan dengan cepat, yang secara efektif mengurangi latensi akses dan meningkatkan kualitas layanan.
-
Aktifkan akselerasi CDN, masukkan CDN-Accelerated Domain Name kustom, lalu klik Create untuk menambahkannya.
Agar akselerasi berlaku, Anda harus mengonfigurasi secara manual rekaman DNS untuk nama domain yang dipercepat. Layanan CDN Alibaba Cloud menghasilkan nilai CNAME untuk nama domain yang dipercepat. Anda harus memetakan CNAME ini ke nama domain yang dipercepat Anda.
Penting-
Fitur akselerasi CDN mengonsumsi traffic internet dan menimbulkan biaya traffic. Untuk informasi lebih lanjut, lihat Ikhtisar penagihan.
-
Nama domain kustom dan nama domain yang dipercepat tidak boleh sama. Untuk menghemat resource domain, Anda dapat mengonfigurasi nama domain yang dipercepat sebagai subdomain dari nama domain kustom Anda. Misalnya, jika nama domain kustom Anda adalah
example.com, Anda dapat mengatur nama domain yang dipercepat menjadifast.example.com.
-
-
Klik nama domain kustom yang telah Anda konfigurasi. Di halaman detail, di bagian CDN Acceleration Settings, klik CDN Settings di kolom Actions. Hal ini akan mengarahkan Anda ke Konsol CDN Alibaba Cloud, tempat Anda dapat menemukan CNAME untuk nama domain yang dipercepat Anda.
CNAME menggunakan format
Nama domain yang dipercepat.w.kunlun**.com, misalnya,fast.example.com.w.kunlunle.com. -
Login ke Konsol DNS Alibaba Cloud, temukan nama domain kustom Anda, dan buat rekaman DNS yang mengarahkan nama domain yang dipercepat ke CNAME yang ditetapkan untuk mengaktifkan akselerasi. Untuk informasi lebih lanjut, lihat Tambahkan Rekaman DNS.
Atur Jenis Rekaman ke CNAME - Map a domain name to another domain name.
Atur Hostname ke bagian pertama dari nama subdomain (dalam contoh ini,
fast). Atur Record Value ke nilai CNAME untuk nama domain yang dipercepat yang Anda peroleh pada langkah sebelumnya.
3.6 (Opsional) Konfigurasi CORS
Anda dapat mengonfigurasi Cross-Origin Resource Sharing (CORS) untuk nama domain kustom dengan memanggil operasi API UpdateCustomDomain. Untuk informasi lebih lanjut, lihat Tangani permintaan CORS.
4. Verifikasi domain kustom
4.1 Verifikasi akses domain kustom
-
Metode 1: Gunakan perintah
curl URL. Contoh:curl example.com/login. -
Metode 2: Gunakan browser web.
Masukkan URL permintaan di bilah alamat dan tekan Enter untuk memverifikasi bahwa fungsi target dipanggil.
4.2 (Opsional) Verifikasi domain yang dipercepat
Di browser, gunakan nama domain yang dipercepat yang Anda konfigurasi di Langkah 3.5 (Opsional) Pengaturan CDN untuk mengakses aplikasi. Kemudian, buka developer tools dan periksa nilai header respons X-Cache untuk memverifikasi bahwa akselerasi CDN berfungsi.
Header respons X-Cache menunjukkan status cache. Nilai MISS menunjukkan cache miss pada akses pertama, artinya permintaan diambil dari origin server. Permintaan berikutnya seharusnya mengembalikan HIT, yang menunjukkan cache hit yang berhasil.
|
Miss pada akses pertama |
Hit akses berikutnya |
|
Di DevTools browser, buka panel Network. Pilih permintaan target dan lihat tab Headers. Pastikan Status Code adalah |
Di DevTools browser, periksa tab Headers untuk permintaan kedua di panel Network. Status Code adalah |
Paket sandi
Paket sandi kuat dan lemah
Versi TLS dan paket sandi
Pemetaan nama RFC dan OpenSSL
Aturan pencocokan
Aturan pencocokan rute
Saat Anda mengikat nama domain kustom, Anda memetakan path ke fungsi. Hal ini memungkinkan permintaan dari path berbeda untuk memicu fungsi yang sesuai. Function Compute mendukung dua jenis pencocokan path: pencocokan eksak dan pencocokan kabur.
-
Pencocokan eksak: Permintaan memicu fungsi hanya ketika path-nya identik dengan path yang dikonfigurasi.
Misalnya, jika Anda mengonfigurasi rute yang memetakan path /a ke fungsi f1, versi 1, hanya permintaan untuk /a yang akan memicu fungsi tersebut. Permintaan untuk /a/ tidak akan cocok.
-
Pencocokan kabur: Menggunakan karakter wildcard (*) di akhir path untuk mencocokkan permintaan apa pun dengan awalan path yang cocok.
Misalnya, jika Anda mengonfigurasi rute dengan path /login/* untuk menargetkan fungsi f2, versi 1, permintaan apa pun yang path-nya dimulai dengan /login/ (seperti /login/a atau /login/b/c/d) akan memicu fungsi tersebut.
-
Jika beberapa rute dikonfigurasi untuk nama domain kustom, pencocokan eksak didahulukan daripada pencocokan kabur.
-
Jika beberapa rute pencocokan kabur berlaku untuk permintaan, yang memiliki awalan pencocokan terpanjang yang digunakan.
Misalnya, pertimbangkan nama domain kustom
example.comdengan dua path yang dikonfigurasi: /login/a/* dan /login/*. Permintaan ke example.com/login/a/b cocok dengan kedua path tersebut. Namun, berdasarkan prinsip Pencocokan awalan terpanjang, permintaan diarahkan ke fungsi yang terkait dengan /login/a/* karena merupakan path yang lebih spesifik.
Contoh
Asumsikan Anda telah mengonfigurasi lima aturan routing berikut untuk nama domain kustom example.com.
|
Aturan routing |
Path |
Nama fungsi |
Versi |
|
Aturan routing 1 |
/ |
f1 |
1 |
|
Aturan routing 2 |
/* |
f2 |
2 |
|
Aturan routing 3 |
/login |
f3 |
3 |
|
Aturan routing 4 |
/login/a |
f4 |
4 |
|
Aturan routing 5 |
/login/* |
f5 |
5 |
Tabel berikut menunjukkan hasil pencocokan.
|
URL Permintaan |
Fungsi |
Versi |
Path |
|
example.com |
f1 |
1 |
/ |
|
example.com/user |
f2 |
2 |
/* |
|
example.com/login |
f3 |
3 |
/login |
|
example.com/login/a |
f4 |
4 |
/login/a |
|
example.com/login/a/b |
f5 |
5 |
/login/* |
|
example.com/login/b |
f5 |
5 |
/login/* |
Aturan pencocokan nama domain
Function Compute mencocokkan nama domain dalam permintaan dengan nama domain kustom yang dikonfigurasi, lalu meneruskan permintaan ke fungsi yang sesuai. Function Compute mendukung pencocokan eksak dan pencocokan kabur untuk nama domain.
-
Pencocokan eksak: Permintaan memicu fungsi hanya ketika nama domain-nya identik dengan nama domain tunggal yang dikonfigurasi.
-
Pencocokan kabur: Permintaan dapat memicu fungsi jika nama domain-nya cocok dengan nama domain wildcard yang dikonfigurasi. Nama domain wildcard harus menggunakan satu karakter wildcard (*) sebagai label pertamanya.
-
Jika permintaan cocok dengan nama domain tunggal dan nama domain wildcard, nama domain tunggal didahulukan.
-
Nama domain wildcard hanya dapat mencocokkan nama domain pada level yang sama. Misalnya, nama domain wildcard
*.aliyun.comdapat mencocokkanfc.aliyun.com, tetapi tidak dapat mencocokkancn-hangzhou.fc.aliyun.com. Hal ini karena*.aliyun.comdanfc.aliyun.comkeduanya merupakan domain tingkat tiga, sedangkancn-hangzhou.fc.aliyun.comadalah domain tingkat empat.
Contoh
Asumsikan Anda memiliki nama domain kustom berikut: fc.aliyun.com, *.aliyun.com, dan *.fc.aliyun.com. Tabel berikut menunjukkan nama domain mana yang dicocokkan oleh setiap permintaan.
|
Domain permintaan |
Domain yang dicocokkan |
|
fc.aliyun.com |
fc.aliyun.com |
|
fnf.aliyun.com |
*.aliyun.com |
|
cn-hangzhou.fc.aliyun.com |
*.fc.aliyun.com |
|
accountID.cn-hangzhou.fc.aliyun.com |
none |
FAQ
Titik akhir publik untuk penggunaan produksi
Kesalahan 502 domain kustom
Kesalahan dengan nama domain dalam bahasa Mandarin
Unduhan paksa di browser
Pengalihan 301 domain yang dipercepat
Pemilihan fungsi dalam routing
Fungsi tidak dipicu oleh path rute
Diagnostik
Jika Anda mengalami kesalahan saat mengikat nama domain kustom, server akan mengembalikan pesan kesalahan. Tabel ini mencantumkan kode kesalahan umum untuk membantu Anda mengidentifikasi dan menyelesaikan masalah tersebut.
|
Kode kesalahan |
Kode status HTTP |
Pesan kesalahan |
Penyebab |
|
InvalidICPLicense |
400 |
domain name '%s' has not got ICP license, or the ICP license does not belong to Aliyun |
Nama domain tersebut tidak memiliki pendaftaran ICP, atau pendaftarannya tidak mencantumkan Alibaba Cloud sebagai penyedia layanan. |
|
DomainNameNotResolved |
400 |
domain name '%s' has not been resolved to your FC endpoint, the expected endpoint is '%s' |
Rekaman CNAME untuk nama domain tidak mengarah ke titik akhir yang ditentukan. Untuk memverifikasi hal ini, gunakan perintah dig atau periksa pengaturan server DNS Anda. |
|
DomainRouteNotFound |
404 |
no route found in domain '%s' for path '%s' |
Tidak ada fungsi yang dikonfigurasi untuk path yang ditentukan. |
|
TriggerNotFound |
404 |
trigger 'http' does not exist in service '%s' and function '%s' |
Fungsi yang diikat ke nama domain kustom tidak memiliki Pemicu HTTP. |
|
DomainNameNotFound |
404 |
domain name '%s' does not exist |
Nama domain yang diminta tidak ada. |
|
DomainNameAlreadyExists |
409 |
domain name '%s' already exists |
Nama domain yang ditentukan sudah ada. |
Jika masalah berlanjut, bergabunglah dengan grup DingTalk (ID grup: 64970014484) untuk mendapatkan bantuan dari engineer Function Compute.