Mengirim konten HTTP dan HTTPS melalui nama host yang sama saat menggunakan Cloud CDN adalah hal yang umum. Meskipun banyak browser menerapkan penggunaan Transport Layer Security (TLS) dan tidak mengizinkan pengiriman konten yang tidak aman, masih ada kasus penggunaan saat pengiriman yang tidak aman dan pengiriman yang aman harus diizinkan melalui nama host yang sama. Artikel ini membahas cara mendapatkan fungsi ini menggunakan Cloud CDN.
Tantangan
Saat klien membuat koneksi dengan server edge CDN, protokol pengiriman pengguna akhir akan dinegosiasikan. Sebagian besar platform CDN konvensional mengarahkan traffic ke jejak pengiriman masing-masing dengan:
- Mengarahkan ke nama domain milik CDN, menggunakan data CNAME DNS.
- Merutekan traffic ke sebagian server yang mendukung negosiasi TLS untuk nama domain tersebut.
Karena Cloud CDN terintegrasi dengan Cloud Load Balancing, pendekatan Cloud CDN berbeda dengan pendekatan CDN konvensional. Cloud CDN memanfaatkan alamat IP Anycast dari Load Balancer Aplikasi eksternal. Saat mengonfigurasi Cloud CDN, Anda memiliki alamat IP tertentu untuk mengarahkan traffic. Hal ini memerlukan konstruksi data A (untuk IPv4) dan/atau AAAA (untuk IPv6) dalam data DNS Anda, bukan data CNAME dengan nilai nama host.
Secara default, saat mengonfigurasi frontend load balancer, Google Cloud akan menetapkan alamat IP sementara secara dinamis. Karena Anda perlu mengonfigurasi konfigurasi HTTP dan HTTPS secara terpisah, hal ini dapat menyebabkan Anda memiliki dua alamat IP untuk instance Cloud CDN. Karena alamat IP data A atau AAAA yang sama digunakan untuk HTTP dan HTTPS, kasus ini tidak dapat ditangani dengan benar di DNS.
Solusi
Saat mengirimkan konten aman dan tidak aman melalui nama host yang sama, klien akan diarahkan ke server edge yang dapat menegosiasikan HTTP atau HTTPS. Agar dapat berfungsi dengan Cloud CDN, Anda dapat mencadangkan alamat IP dan mengikat alamat IP yang dicadangkan ke konfigurasi frontend HTTP dan HTTPS di Load Balancer Aplikasi eksternal.
Dalam diagram:
- permintaan masuk untuk www.example.com berasal dari klien yang menggunakan HTTP/2, HTTPS, dan HTTP.
Dua alamat IP dicadangkan, satu untuk IPv4 dan satu untuk IPv6:
- 34.95.111.204
- [2600:1901:0:b13e::]
Kedua alamat IP ini terikat dengan www.example.com di Cloud DNS.
Saat mengonfigurasi Load Balancer Aplikasi eksternal, konfigurasi frontend menyertakan empat aturan penerusan yang menggunakan alamat IP yang dicadangkan:
Nama Protokol IP:Port ipv4-http HTTP 34.95.111.204:80 ipv4-https HTTPS 34.95.111.204:443 ipv6-http HTTP [2600:1901:0:b13e::]:80 ipv6-https HTTPS [2600:1901:0:b13e::]:443 Untuk cache Cloud CDN yang tidak ditemukan, load balancer mendistribusikan permintaan ke asal backend, berdasarkan setelan yang ditentukan di peta URL load balancer.
Langkah 1: Mencadangkan alamat IP eksternal global
Buat alamat IPv4 atau IPv6 (atau keduanya). Untuk mendukung alamat IPv4 dan IPv6, Anda harus membuat satu alamat IPv4 dan satu alamat IPv6.
Di data DNS,buat data A (atau AAAA) untuk mengarahkan traffic ke alamat IP yang direservasi ini.
Konsol
- Di konsol Google Cloud, buka halaman External IP addresses.
- Klik Reserve static address untuk memesan alamat IPv4.
- Tetapkan Nama
ipv4-address
. - Tetapkan paket Jaringan ke Premium.
- Tetapkan IP version ke IPv4.
- Tetapkan Type ke Global.
- Klik Reserve.
Load balancer menggunakan jaringan Paket Premium, seperti yang diperlukan saat Cloud CDN diaktifkan.
gcloud
gcloud compute addresses create ipv4-address \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --global
Perhatikan alamat IPv4 yang dicadangkan:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Ulangi langkah ini untuk IPv6.
Untuk informasi selengkapnya, lihat Mereservasi alamat IP eksternal statis baru.
Langkah 2: Tautkan alamat IP yang dicadangkan ke load balancer
Bagian ini menunjukkan cara menetapkan alamat IP ke load balancer Anda. Petunjuk menyeluruh untuk menyiapkan load balancer berada di luar cakupan artikel ini. Untuk contoh penyiapan, lihat Membuat load balancer HTTPS.
Bagian konfigurasi frontend memungkinkan Anda memilih protokol yang digunakan antara klien dan load balancer.
Dalam contoh ini, Anda menggunakan HTTP dan HTTPS antara klien dan load balancer, sehingga Anda memerlukan satu atau beberapa resource sertifikat SSL untuk mengonfigurasi proxy.
Konsol
Mengonfigurasi aturan penerusan HTTP
- Di konsol Google Cloud, buka halaman Load balancing.
- Pilih load balancer, lalu klik Edit.
- Di panel kiri, klik Frontend configuration.
- Di kolom Name, masukkan
ipv4-http
. - Pada kolom Protocol, pilih
HTTP
. - Tetapkam Versi IP ke
IPv4
. - Di IP address, pilih
ipv4-address
, yang telah Anda buat sebelumnya. - Pastikan Port ditetapkan ke
80
untuk mengizinkan traffic HTTP. - Klik Done.
Mengonfigurasi aturan penerusan HTTPS
- Di konsol Google Cloud, buka halaman Load balancing.
- Pilih load balancer, lalu klik Edit.
- Di panel kiri, klik Frontend configuration.
- Di kolom Name, masukkan
ipv4-https
. - Pada kolom Protocol, pilih
HTTPS
. - Tetapkam Versi IP ke
IPv4
. - Di IP address, pilih
ipv4-address
, yang telah Anda buat sebelumnya. - Pastikan Port ditetapkan ke
443
untuk mengizinkan traffic HTTP. - Klik menu drop-down Certificate.
- Jika Anda sudah memiliki resource sertifikat SSL yang dikelola sendiri yang ingin digunakan sebagai sertifikat SSL utama, pilih sertifikat tersebut dari menu drop-down.
- Jika tidak, pilih Create a new certificate.
- Pilih Upload sertifikat saya atau Buat sertifikat yang dikelola Google.
- Jika Anda memilih Upload my certificate, selesaikan
langkah-langkah berikut.
- Isi Name
www-ssl-cert
. - Di kolom yang sesuai, upload Sertifikat kunci publik (file .crt), Rantai sertifikat (file .csr), dan Kunci pribadi (file .key).
- Klik Create.
- Isi Name
- Jika Anda memilih Create Google managed certificate, masukkan Domain.
- Untuk menambahkan resource sertifikat selain
resource sertifikat SSL utama:
- Klik Add certificate.
- Pilih sertifikat dari daftar Certificates atau klik Create a new certificate, lalu ikuti petunjuk di atas.
- Klik Done.
Ulangi langkah-langkah ini untuk IPv6.
Tinjau dan selesaikan
- Di panel kiri, klik Review and finalize.
- Bandingkan setelan Anda dengan yang ingin Anda buat.
- Jika semuanya sudah benar, klik Perbarui.
gcloud
Buat proxy HTTP target untuk merutekan permintaan ke peta URL Anda.
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=web-map
Buat proxy HTTPS target untuk merutekan permintaan ke peta URL Anda. Proxy merupakan bagian dari load balancer yang menyimpan sertifikat SSL untuk Load Balancing HTTPS, sehingga Anda juga memuat sertifikat pada langkah ini.
gcloud compute target-https-proxies create https-lb-proxy \ --url-map=web-map --ssl-certificates=www-ssl-cert
Buat dua aturan penerusan global untuk mengarahkan permintaan masuk ke proxy, satu untuk setiap alamat IP yang Anda buat.
-
Untuk Load Balancer Aplikasi eksternal global, gunakan perintah gcloud CLI dengan
load-balancing-scheme=EXTERNAL_MANAGED
. Setelan ini menawarkan kapabilitas pengelolaan traffic tingkat lanjut. - Untuk Load Balancer Aplikasi klasik, gunakan
load-balancing-scheme=EXTERNAL
.
gcloud compute forwarding-rules create ipv4-http \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=ipv4-address \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
gcloud compute forwarding-rules create ipv4-https \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=ipv4-address \ --global \ --target-https-proxy=https-lb-proxy \ --ports=443
-
Untuk Load Balancer Aplikasi eksternal global, gunakan perintah gcloud CLI dengan
Setelah membuat aturan penerusan global, mungkin perlu beberapa menit untuk menerapkan konfigurasi Anda di seluruh dunia.
Langkah 3: Buat data A atau AAAA di file zona DNS Anda
Langkah terakhir dalam proses ini adalah membuat data A dan/atau AAAA dalam file zona DNS Anda untuk mengarah ke Cloud CDN tempat nilai nama host Anda akan menjawab dengan alamat IP yang dicadangkan yang Anda tetapkan di load balancer.
Sekarang, Anda dapat menayangkan HTTP dan HTTPS melalui nama host yang sama melalui Cloud CDN.
Opsional: Mengalihkan HTTP ke HTTPS
Jika ingin mengalihkan permintaan HTTP ke load balancer HTTPS, Anda harus menambahkan load balancer HTTP parsial yang memiliki frontend, tetapi tidak memiliki backend. Frontend menerima permintaan, lalu mengalihkannya ke load balancer HTTPS. Hal ini dilakukan dengan menggunakan hal berikut:
- Aturan penerusan dengan alamat IP eksternal yang dicadangkan yang sama dengan yang digunakan load balancer HTTPS Anda, seperti yang ditampilkan di halaman ini.
- Proxy HTTP target, seperti yang ditampilkan di halaman ini.
- Peta URL yang mengalihkan traffic ke load balancer HTTPS.
Mendapatkan dukungan
Jika ada pertanyaan tentang Google Cloud dan Cloud CDN, hubungi tim Penjualan Google Cloud Anda atau hubungi kami melalui saluran Slack Komunitas Google Cloud dan kirimkan catatan di saluran #cloud-cdn.
Apa langkah selanjutnya?
- Untuk mengetahui detail konten yang di-cache, lihat Detail cache.
- Untuk menyelesaikan masalah load balancer, lihat halaman pemecahan masalah load balancer.
- Untuk menyelesaikan masalah Cloud CDN, lihat halaman pemecahan masalah Cloud CDN.
- Untuk mengetahui informasi tentang cara menggunakan Cloud CDN di GKE, lihat Cloud CDN di halaman fitur Ingress.
- Untuk memeriksa apakah Cloud CDN menayangkan respons dari cache, Lihat log.
- Membersihkan penyiapan load balancer.