Halaman ini menunjukkan cara menyiapkan pengalihan HTTP-ke-HTTPS untuk Load Balancer Aplikasi klasik. Halaman ini hanya untuk Load Balancer Aplikasi klasik. Jika Anda menggunakan load balancer dalam mode yang berbeda, lihat salah satu halaman berikut:
Menyiapkan pengalihan HTTP-ke-HTTPS untuk Application Load Balancer eksternal global
Menyiapkan pengalihan HTTP-ke-HTTPS untuk Application Load Balancer eksternal regional
Contoh ini menunjukkan cara menggunakan pengalihan peta URL untuk mengalihkan semua permintaan dari HTTP ke HTTPS. Contoh ini menunjukkan cara menyiapkan pengalihan menggunakan port terkenal 80 (untuk HTTP) dan 443 (untuk HTTPS). Namun, Anda tidak diwajibkan untuk menggunakan nomor port tertentu ini. Setiap aturan penerusan untuk Load Balancer Aplikasi dapat mereferensikan satu port dari 1-65535.
HTTPS menggunakan TLS (SSL) untuk mengenkripsi permintaan dan respons HTTP, sehingga
lebih aman dan terlindungi. Situs yang menggunakan HTTPS memiliki https://
di awal URL-nya, bukan http://
.
Untuk Load Balancer Aplikasi HTTPS baru
Jika membuat Load Balancer Aplikasi HTTPS baru, Anda dapat menggunakan konsol Google Cloud untuk menyiapkan pengalihan HTTP ke HTTPS.
Saat membuat frontend load balancer, gunakan langkah-langkah berikut:
- Di konsol Google Cloud, buka halaman konfigurasi load balancer.
Buka Load balancing (Create Classic Application Load Balancer)
- Untuk Load balancer name, masukkan nama.
- Klik Frontend configuration.
- Untuk Protocol, pilih HTTPS (termasuk HTTP/2).
- Untuk IP address, klik Create IP address. Masukkan nama untuk alamat IP statis baru, lalu klik Cadangkan.
- Untuk Sertifikat, pilih sertifikat SSL.
- Untuk membuat pengalihan, centang kotak Enable HTTP to HTTPS Redirect.
- Klik Done.
- Selesaikan backend dan konfigurasi lain yang diperlukan.
- Klik Create.
Anda harus memilih protokol HTTPS dan menggunakan alamat IP yang dicadangkan (bukan sementara) agar dapat mencentang kotak.
Bergantung pada jenis backend Anda, gunakan petunjuk konsol Google Cloud dari salah satu panduan berikut untuk menyelesaikan penyiapan ini:
- Backend Compute Engine
- Bucket backend
- Backend Cloud Run, App Engine, atau Cloud Functions
- Backend eksternal
Menyetel kotak centang Enable HTTP to HTTPS Redirect akan otomatis membuat load balancer HTTP parsial tambahan yang terdiri dari peta URL, aturan penerusan, dan proxy HTTP target. Load balancer HTTP parsial ini menggunakan alamat IP yang sama dengan load balancer HTTPS dan mengalihkan permintaan HTTP ke frontend HTTPS load balancer. Library ini menggunakan 301 Moved Permanently
sebagai kode respons pengalihan
default.
Setelah load balancer HTTPS dibuat, Anda dapat melihat load balancer HTTP parsial dalam daftar load balancer, dengan akhiran -redirect. Uji penyiapan Anda menggunakan langkah-langkah di Menguji pengalihan HTTP-ke-HTTPS.
Untuk load balancer yang ada
Jika sudah memiliki Load Balancer Aplikasi HTTPS (di sini disebut LB1) yang menyalurkan traffic HTTPS di port 443, Anda harus membuat Load Balancer Aplikasi HTTP parsial (di sini disebut LB2) dengan penyiapan berikut:
- Alamat IP frontend yang sama yang digunakan oleh LB1
- Pengalihan yang dikonfigurasi di peta URL
Load balancer HTTP parsial ini menggunakan alamat IP yang sama dengan load balancer HTTPS dan mengalihkan permintaan HTTP ke frontend HTTPS load balancer Anda.
Arsitektur ini ditampilkan pada diagram berikut.
Mengalihkan traffic ke load balancer HTTPS
Setelah memverifikasi bahwa load balancer HTTPS (LB1) berfungsi, Anda dapat membuat load balancer HTTP parsial (LB2) dengan frontend-nya yang dikonfigurasi untuk mengalihkan traffic ke LB1.
Contoh ini menggunakan kode respons 301. Sebagai gantinya, Anda dapat menggunakan kode respons yang berbeda.
Untuk mengonfigurasi pengalihan dengan gcloud
, Anda harus mengimpor file YAML dan memastikan bahwa proxy HTTP target mengarah ke peta URL yang mengalihkan traffic. Jika Anda menggunakan konsol Google Cloud, hal ini akan ditangani untuk Anda.
Load Balancer Aplikasi eksternal regional tidak didukung di konsol Google Cloud.
gcloud
- Buat file YAML
/tmp/web-map-http.yaml
. Contoh ini menggunakan MOVED_PERMANENTLY_DEFAULT sebagai kode respons. - Validasi peta URL.
- Buat peta URL load balancer HTTP dengan mengimpor file YAML. Nama untuk peta URL ini adalah
web-map-http
. - Pastikan peta URL telah diperbarui. Peta URL load balancer HTTP Anda akan terlihat seperti ini:
- Buat proxy HTTP target baru atau perbarui proxy HTTP target yang ada,
menggunakan
web-map-http
sebagai peta URL. - Buat aturan penerusan untuk mengarahkan permintaan masuk ke proxy. Flag
--address
menentukanlb-ipv4-1
, yang merupakan alamat IP yang sama dengan yang digunakan untuk load balancer HTTPS eksternal.
kind: compute#urlMap name: web-map-http defaultUrlRedirect: redirectResponseCode: MOVED_PERMANENTLY_DEFAULT httpsRedirect: True tests: - description: Test with no query parameters host: example.com path: /test/ expectedOutputUrl: https://example.com/test/ expectedRedirectResponseCode: 301 - description: Test with query parameters host: example.com path: /test/?parameter1=value1¶meter2=value2 expectedOutputUrl: https://example.com/test/?parameter1=value1¶meter2=value2 expectedRedirectResponseCode: 301
gcloud compute url-maps validate --source /tmp/web-map-http.yaml
Jika pengujian lulus dan perintah menampilkan pesan berhasil, simpan perubahan ke peta URL.
gcloud compute url-maps import web-map-http \ --source /tmp/web-map-http.yaml \ --global
Jika Anda memperbarui peta URL yang ada, perintah berikut akan muncul:
Url Map [web-map-http] will be overwritten. Do you want to continue (Y/n)?
Untuk melanjutkan, tekan Y.
gcloud compute url-maps describe web-map-http
creationTimestamp: '2020-03-23T10:53:44.976-07:00' defaultUrlRedirect: httpsRedirect: true redirectResponseCode: MOVED_PERMANENTLY_DEFAULT fingerprint: 3A5N_RLrED8= id: '2020316695093397831' kind: compute#urlMap name: web-map-http selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/web-map-http
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=web-map-http \ --global
gcloud compute target-http-proxies update http-lb-proxy \ --url-map=web-map-http \ --global
gcloud compute forwarding-rules create http-content-rule \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --address=lb-ipv4-1 \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
Menambahkan header HSTS kustom
Saat Anda menambahkan header Strict-Transport-Security
HTTP ke layanan backend load balancer HTTPS, load balancer akan mengirim header kustom ke klien sehingga saat klien mencoba mengakses URL melalui HTTP lagi, browser akan mengalihkan permintaan. Setelan
header adalah sebagai berikut:
- Nama header:
Strict-Transport-Security
- Nilai header:
max-age=31536000; includeSubDomains; preload
Untuk menambahkan header kustom ke konfigurasi layanan backend, gunakan
flag --custom-response-header
.
gcloud compute backend-services update BACKEND_SERVICE_NAME_LB1 \ --global \ --custom-response-header='Strict-Transport-Security:max-age=31536000; includeSubDomains; preload'
Untuk mengetahui informasi selengkapnya, lihat Membuat header kustom.
Menguji pengalihan HTTP-ke-HTTPS
Catat alamat IP yang direservasi yang Anda gunakan untuk kedua load balancer.
gcloud compute addresses describe lb-ipv4-1
--format="get(address)"
--global
Dalam contoh ini, asumsikan bahwa alamat IP yang dicadangkan adalah 34.98.77.106
. URL
http://34.98.77.106/
dialihkan ke https://34.98.77.106/
.
Setelah beberapa menit berlalu, Anda dapat mengujinya dengan menjalankan perintah curl
berikut.
curl -v http://hostname.com
Contoh output:
* Connected to 34.98.77.106 (34.98.77.106) port 80 (#0) > GET / HTTP/1.1 > Host: hostname.com > User-Agent: curl/7.64.0 > Accept: */* > < HTTP/1.1 301 Moved Permanently < Cache-Control: private < Content-Type: text/html; charset=UTF-8 < Referrer-Policy: no-referrer < Location: https://hostname.com < Content-Length: 220 < Date: Fri, 30 Jul 2021 21:32:25 GMT < <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>301 Moved</TITLE></HEAD><BODY> <H1>301 Moved</H1> The document has moved <A HREF="https://hostname.com">here</A>. </BODY></HTML> * Connection #0 to host hostname.com left intact
Prosedur terkait
Untuk menggunakan Terraform, lihat tab pengalihan HTTP-ke-HTTPS.
Untuk GKE, lihat pengalihan HTTP-ke-HTTPS dalam dokumentasi GKE.
Untuk Load Balancer Aplikasi internal, lihat Menyiapkan pengalihan HTTP ke HTTPS untuk Load Balancer Aplikasi internal.
Untuk jenis pengalihan lainnya, lihat pengalihan URL.