Menyiapkan pengalihan HTTP-ke-HTTPS untuk Load Balancer Aplikasi eksternal regional

Halaman ini menunjukkan cara menyiapkan pengalihan HTTP-ke-HTTPS untuk Load Balancer Aplikasi eksternal regional. Halaman ini hanya untuk Load Balancer Aplikasi eksternal regional. Jika Anda menggunakan load balancer dalam mode yang berbeda, lihat salah satu halaman berikut:

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 HTTPS baru

Load Balancer Aplikasi eksternal regional tidak mendukung pembuatan pengalihan HTTP ke HTTPS saat membuat load balancer baru. Anda harus menggunakan petunjuk dari panduan backend Compute Engine terlebih dahulu untuk membuat load balancer baru. Kemudian, Anda dapat menggunakan petunjuk di bagian berikutnya untuk menyiapkan pengalihan untuk semua permintaan dari HTTP ke HTTPS.

Prosedur ini mengasumsikan bahwa Anda sudah memiliki load balancer HTTPS eksternal yang menyalurkan traffic HTTPS di port 443.

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.

Arsitektur konfigurasi pengalihan HTTP-ke-HTTPS.
Gambar 2. Arsitektur konfigurasi pengalihan HTTP-ke-HTTPS (klik untuk memperbesar).

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

  1. Buat file YAML /tmp/web-map-http.yaml. Contoh ini menggunakan MOVED_PERMANENTLY_DEFAULT sebagai kode respons.
  2.        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&parameter2=value2
             expectedOutputUrl: https://example.com/test/?parameter1=value1&parameter2=value2
             expectedRedirectResponseCode: 301
           
  3. Buat peta URL load balancer HTTP dengan mengimpor file YAML. Nama untuk peta URL ini adalah web-map-http.
  4.        gcloud compute url-maps import web-map-http \
               --source /tmp/web-map-http.yaml \
               --region=REGION
           

    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.

  5. Pastikan peta URL telah diperbarui. Peta URL load balancer HTTP Anda akan terlihat seperti ini:
  6.        gcloud compute url-maps describe web-map-http \
               --region=REGION
           
           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/regions/REGION/urlMaps/web-map-http
           
  7. Buat proxy HTTP target baru atau perbarui proxy HTTP target yang ada, menggunakan web-map-http sebagai peta URL.
  8.        gcloud compute target-http-proxies create http-lb-proxy \
               --url-map=web-map-http \
               --region=REGION
           
    ATAU
            gcloud compute target-http-proxies update http-lb-proxy \
               --url-map=web-map-http \
               --region=REGION
           
  9. Buat aturan penerusan untuk mengarahkan permintaan masuk ke proxy. Flag --address menentukan lb-ipv4-1, yang merupakan alamat IP yang sama dengan yang digunakan untuk load balancer HTTPS eksternal.
  10.        gcloud compute forwarding-rules create http-content-rule \
               --load-balancing-scheme=EXTERNAL_MANAGED \
               --address=lb-ipv4-1 \
               --network-tier=STANDARD \
               --region=REGION \
               --target-http-proxy=http-lb-proxy \
               --target-http-proxy-region=REGION \
               --ports=80
           

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)"
--region=REGION

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

Langkah selanjutnya