בדף הזה מוסבר איך להגדיר הפניה אוטומטית מ-HTTP ל-HTTPS במאזן עומסים גלובלי חיצוני של אפליקציות (ALB). הדף הזה רלוונטי רק למאזן עומסים גלובלי חיצוני של אפליקציות (ALB). אם אתם משתמשים במאזן עומסים במצב אחר, כדאי לעיין באחד מהדפים הבאים:
הגדרת הפניה אוטומטית מ-HTTP ל-HTTPS במאזן עומסים קלאסי של אפליקציות (ALB)
הגדרת הפניה אוטומטית מ-HTTP ל-HTTPS למאזני עומסים חיצוניים אזוריים של אפליקציות
בדוגמה הזו מוצג איך להשתמש בהפניות אוטומטיות של מפת URL כדי להפנות את כל הבקשות מ-HTTP ל-HTTPS. בדוגמה הזו מוסבר איך להגדיר הפניות אוטומטיות באמצעות היציאות המוכרות 80 (ל-HTTP) ו-443 (ל-HTTPS). עם זאת, לא חובה להשתמש במספרי היציאה הספציפיים האלה. כל כלל העברה של מאזן עומסים של אפליקציה יכול להפנות ליציאה אחת מתוך 1-65535.
פרוטוקול HTTPS משתמש ב-TLS (או ב-SSL) כדי להצפין בקשות ותשובות של HTTP, וכך הופך את החיבור לבטוח ומאובטח יותר. באתר שמשתמש ב-HTTPS, כתובת ה-URL מתחילה ב-https:// במקום ב-http://.
למאזני עומסים חדשים של אפליקציות ב-HTTPS
אם אתם יוצרים מאזן עומסים חדש של אפליקציות (ALB) ב-HTTPS, אתם יכולים להשתמש בGoogle Cloud מסוף כדי להגדיר הפניה אוטומטית מ-HTTP ל-HTTPS.
במהלך יצירת הקצה הקדמי של מאזן העומסים, פועלים לפי השלבים הבאים:
- נכנסים לדף ההגדרות של איזון העומסים במסוף Google Cloud .
כניסה לדף Load balancing (יצירת מאזן עומסים גלובלי חיצוני של אפליקציות)
- בשדה Load balancer name, מזינים שם.
- לוחצים על Frontend configuration.
- בשביל Protocol, בוחרים HTTPS (includes HTTP/2).
- בשביל IP address, לוחצים על Create IP address. מזינים שם לכתובת ה-IP הסטטית החדשה ולוחצים על שמירה.
- בשדה Certificate, בוחרים אישור SSL.
- כדי ליצור את ההפניה האוטומטית, מסמנים את תיבת הסימון Enable HTTP to HTTPS Redirect (הפניה אוטומטית מ-HTTP ל-HTTPS).
- לוחצים על סיום.
- משלימים את ההגדרות הנדרשות בקצה העורפי ובמקומות אחרים.
- לוחצים על יצירה.
כדי לסמן את תיבת הסימון, צריך לבחור בפרוטוקול HTTPS ולהשתמש בכתובת IP שמורה (לא זמנית).
בהתאם לסוג ה-Backend, משתמשים בהוראות במסוף Google Cloud מאחד המדריכים הבאים כדי להשלים את ההגדרה:
- קצה עורפי של Compute Engine
- Backend bucket
- קצה עורפי (backend) של Cloud Run, App Engine או פונקציות Cloud Run
סימון תיבת הסימון Enable HTTP to HTTPS Redirect יוצר באופן אוטומטי מאזן עומסים חלקי נוסף של HTTP, שכולל מפת URL, כלל העברה ופרוקסי HTTP ליעד. מאזן העומסים החלקי מסוג HTTP משתמש באותה כתובת IP כמו מאזן העומסים מסוג HTTPS, ומפנה בקשות HTTP לחלק הקדמי של מאזן העומסים מסוג HTTPS. הוא משתמש ב-301 Moved Permanently כקוד תגובה ברירת המחדל של ההפניה.
אחרי שיוצרים את מאזן העומסים ב-HTTPS, אפשר לראות את מאזן העומסים החלקי ב-HTTP ברשימת מאזני העומסים, עם הסיומת -redirect. כדי לבדוק את ההגדרה, פועלים לפי השלבים שמפורטים במאמר בנושא בדיקת ההפניה האוטומטית מ-HTTP ל-HTTPS.
למאזני עומסים קיימים
אם כבר יש לכם מאזן עומסים של אפליקציות ב-HTTPS (שנקרא כאן LB1) שמשרת תעבורת HTTPS ביציאה 443, אתם צריכים ליצור מאזן עומסים חלקי של אפליקציות ב-HTTP (שנקרא כאן LB2) עם ההגדרה הבאה:
- אותה כתובת IP של חזית העורף שמשמשת את LB1
- הפניה אוטומטית שהוגדרה במפת URL
מאזן העומסים החלקי של HTTP משתמש באותה כתובת IP כמו מאזן העומסים של HTTPS, ומפנה בקשות HTTP לחלק הקדמי של מאזן העומסים של HTTPS.
הארכיטקטורה הזו מוצגת בתרשים הבא.
הפניית תנועה למאזן העומסים של HTTPS
אחרי שמוודאים שמאזן העומסים של HTTPS (LB1) פועל, אפשר ליצור את מאזן העומסים החלקי של HTTP (LB2) עם קצה קדמי שהוגדר להפניה אוטומטית של תעבורה אל LB1.
בדוגמה הזו נעשה שימוש בקוד התגובה 301. במקום זאת, אפשר להשתמש בקוד תגובה אחר.
כדי להגדיר את ההפניה האוטומטית באמצעות gcloud, צריך לייבא קובץ YAML ולוודא ש-Proxy ה-HTTP של היעד מפנה למפת URL שמפנה את התנועה. אם אתם משתמשים במסוף Google Cloud , המערכת מטפלת בזה בשבילכם.
אין תמיכה במאזני עומסים חיצוניים אזוריים של אפליקציות (ALB) במסוף Google Cloud .
gcloud
- יוצרים קובץ YAML
/tmp/web-map-http.yaml. בדוגמה הזו נעשה שימוש ב-MOVED_PERMANENTLY_DEFAULT כקוד התגובה. - מאמתים את מפת ה-URL.
- יוצרים את מפת ה-URL של מאזן העומסים של HTTP על ידי ייבוא קובץ ה-YAML. השם של מפת ה-URL הזו הוא
web-map-http. - מוודאים שמפת URL מעודכנת. מפת ה-URL של מאזן העומסים מסוג HTTP אמורה להיראות בערך כך:
- יוצרים proxy חדש מסוג HTTP ליעד או מעדכנים proxy קיים מסוג HTTP ליעד,
באמצעות
web-map-httpכמפת כתובות ה-URL. - יוצרים כלל העברה כדי להפנות בקשות נכנסות לשרת הפרוקסי. הדגל
--addressמציין אתlb-ipv4-1, שהיא אותה כתובת IP שמשמשת למאזן העומסים החיצוני מסוג HTTPS.
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
אם הבדיקות עוברות והפקודה מוציאה הודעת הצלחה, שומרים את השינויים במפת URL.
gcloud compute url-maps import web-map-http \
--source /tmp/web-map-http.yaml \
--global
אם אתם מעדכנים מפת URL קיימת, תופיע ההודעה הבאה:
Url Map [web-map-http] will be overwritten.
Do you want to continue (Y/n)?
כדי להמשיך, מקישים על 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_MANAGED \
--address=lb-ipv4-1 \
--network-tier=PREMIUM \
--global \
--target-http-proxy=http-lb-proxy \
--ports=80
הוספת כותרת HSTS בהתאמה אישית
כשמוסיפים את כותרת ה-HTTP Strict-Transport-Security לשירות לקצה העורפי של מאזן העומסים של HTTPS, מאזן העומסים שולח את הכותרת המותאמת אישית ללקוח, כך שבפעם הבאה שהלקוח ינסה לגשת לכתובת ה-URL דרך HTTP, הדפדפן יפנה את הבקשה מחדש. הגדרות הכותרת הן:
- שם הכותרת:
Strict-Transport-Security - ערך הכותרת:
max-age=31536000; includeSubDomains; preload
כדי להוסיף את הכותרת המותאמת אישית להגדרת שירות לקצה העורפי, משתמשים בדגל --custom-response-header.
gcloud compute backend-services update BACKEND_SERVICE_NAME_LB1 \
--global \
--custom-response-header='Strict-Transport-Security:max-age=31536000; includeSubDomains; preload'
מידע נוסף מופיע במאמר בנושא יצירת כותרות בהתאמה אישית.
בדיקת ההפניה האוטומטית מ-HTTP ל-HTTPS
שימו לב לכתובת ה-IP השמורה שבה אתם משתמשים בשני מאזני העומסים.
gcloud compute addresses describe lb-ipv4-1
--format="get(address)"
--global
בדוגמה הזו, נניח שכתובת ה-IP השמורה היא 34.98.77.106. כתובת ה-URL http://34.98.77.106/ מפנה אל https://34.98.77.106/.
אחרי כמה דקות, אפשר להריץ את הפקודה הבאה כדי לבדוק את זה:
curl
curl -v http://hostname.com
פלט לדוגמה:
* 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
הליכים קשורים
כדי להשתמש ב-Terraform, אפשר לעיין בכרטיסייה בנושא הפניה אוטומטית מ-HTTP ל-HTTPS.
להגדרות בסביבת GKE, תוכלו לקרוא את המאמר הפניות אוטומטיות מ-HTTP ל-HTTPS במסמכי GKE.
לגבי מאזני עומסים פנימיים של אפליקציות, אפשר לעיין במאמר הגדרת הפניה אוטומטית מ-HTTP ל-HTTPS עבור מאזני עומסים פנימיים של אפליקציות.
למידע על סוגים אחרים של הפניות אוטומטיות, אפשר לעיין במאמר בנושא הפניות אוטומטיות של כתובות URL.