Google Cloud מאזני עומסים של אפליקציות ו-Cloud Service Mesh משתמשים במשאב הגדרה Google Cloudשנקרא מפת URL כדי לנתב בקשות HTTP(S) לשירותי קצה עורפי או לקטגוריות קצה עורפי.
לדוגמה, באמצעות מאזן עומסים חיצוני של אפליקציות (ALB), אפשר להשתמש במפת URL אחת כדי לנתב בקשות ליעדים שונים על סמך הכללים שהוגדרו במפת URL:
- בקשות ל-
https://example.com/videoמועברות לשירות לקצה העורפי אחד. - בקשות ל-
https://example.com/audioמועברות לשירות לקצה העורפי אחר.
- בקשות ל-
https://example.com/imagesמועברות לקטגוריית קצה עורפי של Cloud Storage.
- בקשות לכל שילוב אחר של מארח ונתיב מועברות לשירות קצה עורפי שמוגדר כברירת מחדל.
נעשה שימוש במיפוי כתובות URL במוצרים הבאים: Google Cloud
- מאזן עומסים חיצוני של אפליקציות (מצבים גלובליים, אזוריים וקלאסיים)
- מאזן עומסים פנימי של אפליקציות (ALB) (מצבים אזוריים ובין-אזוריים)
- Cloud Service Mesh, כש-Cloud Service Mesh נפרס עם ממשקי ה-API של איזון העומסים
יש שני סוגים של משאבי מפת URL: גלובליים ואזוריים.
משתמשים ב-
urlMapsגלובליים במאזני עומסים גלובליים חיצוניים של אפליקציות (ALB), במאזני עומסים קלאסיים של אפליקציות (ALB), במאזני עומסים פנימיים של אפליקציות (ALB) חוצי-אזורים וב-Cloud Service Mesh.
regionUrlMapsמשמשים מאזני עומסים חיצוניים אזוריים של אפליקציות (ALB), מאזני עומסים פנימיים אזוריים של אפליקציות (ALB) ו-Cloud Service Mesh.
סוג המשאב שבו משתמשים תלוי בתוכנית לאיזון העומסים של המוצר.
| מוצר | סכמת איזון עומסים | סוג המשאב של מפת URL | יעדים נתמכים |
|---|---|---|---|
| מאזן עומסים גלובלי חיצוני של אפליקציות (ALB) | EXTERNAL_MANAGED |
עולמי | שירותים לקצה העורפי, מאגרי מידע לקצה העורפי |
| מאזן עומסים קלאסי של אפליקציות (ALB) | EXTERNAL |
עולמי | שירותים לקצה העורפי, מאגרי מידע לקצה העורפי |
| מאזן עומסים חיצוני אזורי של אפליקציות (ALB) | EXTERNAL_MANAGED |
אזורי | שירותים לקצה העורפי |
| מאזן עומסים פנימי של אפליקציות (ALB) שפועל בכמה אזורים | INTERNAL_MANAGED |
עולמי | שירותים לקצה העורפי |
| מאזן עומסים פנימי אזורי של אפליקציות (ALB) | INTERNAL_MANAGED |
אזורי | שירותים לקצה העורפי |
| Cloud Service Mesh | INTERNAL_SELF_MANAGED |
עולמי | שירותים לקצה העורפי |
| Cloud Service Mesh | INTERNAL_SELF_MANAGED |
אזורי | שירותים לקצה העורפי |
לא כל התכונות של מפת URL זמינות לכל המוצרים. מפות של כתובות URL שמשמשות עם מאזני עומסים חיצוניים גלובליים של אפליקציות (ALB), מאזני עומסים חיצוניים אזוריים של אפליקציות (ALB), מאזני עומסים פנימיים של אפליקציות (ALB) ו-Cloud Service Mesh תומכות גם בכמה תכונות מתקדמות לניהול תנועה. מידע נוסף על ההבדלים האלה זמין במאמר השוואה בין התכונות של מאזני עומסים: ניתוב וניהול תנועה. בנוסף, מיפויי כתובות URL אזוריים יכולים להיות משאב שמיועד כשירות באפליקציות של App Hub.
איך פועל מיפוי כתובות URL
כשבקשה מגיעה למאזן העומסים, מאזן העומסים מנתב את הבקשה לשירות לקצה העורפי מסוים או לקטגוריית קצה עורפי על סמך הכללים שמוגדרים במפת URL.
שירות קצה עורפי מייצג אוסף של קצה עורפי, שהם מופעים של אפליקציה או מיקרו-שירות. קטגוריית קצה עורפי היא קטגוריה של Cloud Storage, שבדרך כלל משמשת לאירוח תוכן סטטי, כמו תמונות.
יעדים אפשריים למאזני עומסים חיצוניים אזוריים של אפליקציות, למאזני עומסים פנימיים של אפליקציות ול-Cloud Service Mesh:
- שירות לקצה העורפי שמוגדר כברירת מחדל
- שירות לקצה העורפי שאינו ברירת מחדל
בנוסף, מאזני עומסים גלובליים חיצוניים של אפליקציות תומכים בתכונות הבאות:
- קטגוריית קצה עורפי שמוגדרת כברירת מחדל
- קטגוריית קצה עורפי שאינה מוגדרת כברירת מחדל
לדוגמה, נניח שהגדרתם את ההגדרה הבאה:
- כתובת IP אחת:
- כל הבקשות לארגון שלכם מגיעות לאותה כתובת IP ולאותו מאזן עומסים.
- התעבורה מופנית לשירותי קצה עורפיים שונים על סמך כתובת ה-URL של הבקשה.
- שני דומיינים:
example.netסרטוני הדרכה למארחים.example.orgמארחת את האתר של הארגון.
- ארבע קבוצות של שרתים:
- אחד מהם מארח את האתר של הארגון (שירות קצה עורפי:
org-site). - אחד מהם מארח את האתר של סרטון ההדרכה הכולל (שירות קצה עורפי:
video-site). - אחד מהם מארח סרטוני הדרכה באיכות גבוהה (HD) (שירות קצה עורפי:
video-hd). - אחד מהם מארח סרטוני הדרכה באיכות רגילה (SD) (שירות קצה עורפי:
video-sd).
- אחד מהם מארח את האתר של הארגון (שירות קצה עורפי:
אתם רוצים שהדברים הבאים יקרו:
- בקשות אל
example.org(או אל כל דומיין אחר מלבדexample.net) כדי לעבור אל שירות לקצה העורפיorg-site. - בקשות אל
example.netשלא תואמות לנתיבים ספציפיים יותר עוברות לשירות הקצה העורפיvideo-site. - בקשות אל
example.net/video/hd/*לעבור לשירות לקצה העורפיvideo-hd. - בקשות אל
example.net/video/sd/*לעבור לשירות לקצה העורפיvideo-sd.
--path-rule של /video/* תואם למזהי URI כמו /video/test1 ו-/video/test2. עם זאת, כלל הנתיב הזה לא תואם לנתיב /video.
אם מאזן העומסים מקבל בקשה עם /../ בכתובת ה-URL, הוא מסיר את קטע הנתיב לפני .. ומשנה את כתובת ה-URL, ואז מגיב עם כתובת ה-URL ששונתה. לדוגמה, כשנשלחת בקשה ל-http://example.net/video/../abc, מאזן העומסים מגיב בהפניה אוטומטית (redirect) עם קוד 302 אל http://example.net/abc. רוב הלקוחות מגיבים אחר כך בשליחת בקשה לכתובת ה-URL שמוחזרת על ידי מאזן העומסים (במקרה הזה, http://example.net/abc). ההפניה האוטומטית 302 הזו לא מתועדת ב-Cloud Logging.
מפת URL מאפשרת לכם להגדיר ניתוב מסוג זה שמבוסס על מארח ונתיב.
מתן שמות למאזני עומסים
במאזני עומסים של אפליקציות (ALB), השם של מאזן העומסים תמיד זהה לשם של מפת URL. ההתנהגות של כל Google Cloud ממשק היא כדלקמן:
- Google Cloud console. אם יוצרים מאזן עומסים של אפליקציות באמצעות מסוףGoogle Cloud , מפת URL מקבלת באופן אוטומטי את אותו שם שהוזן כשם מאזן העומסים.
- Google Cloud CLI או API. אם יוצרים מאזן עומסים של אפליקציות באמצעות ה-CLI של gcloud או API, צריך להזין שם לבחירה בזמן יצירת מפת URL. השם הזה של מפת URL משתקף במסוףGoogle Cloud כשם של מאזן העומסים.
מידע על מתן שמות למאזני עומסי רשת לשרת proxy ולמאזני עומסי רשת מסוג Passthrough זמין במאמר סקירה כללית על שירותי קצה עורפי: מתן שמות למאזני עומסים.
רכיבים של מפת URL
מפת URL היא קבוצה של Google Cloud משאבי הגדרה שמפנים בקשות לכתובות URL לשירותי קצה עורפי או לקטגוריות קצה עורפי. מפת ה-URL עושה זאת באמצעות החלקים hostname ו-path של כל כתובת URL שהיא מעבדת:
- שם מארח הוא החלק של שם הדומיין בכתובת URL. לדוגמה, שם המארח בכתובת ה-URL
http://example.net/video/hdהואexample.net. - נתיב הוא החלק מכתובת ה-URL שמופיע אחרי שם המארח ומספר היציאה האופציונלי. לדוגמה, הנתיב בכתובת ה-URL
http://example.net/video/hdהוא/video/hd.
בתרשים הזה מוצג המבנה של אובייקטים של הגדרות איזון עומסים ביחס זה לזה.
אתם קובעים אילו שירותים לקצה העורפי או קטגוריות קצה עורפי יקבלו בקשות נכנסות באמצעות פרמטרים ההגדרה הבאים של מפת URL:
שירות קצה עורפי שמוגדר כברירת מחדל או קטגוריית קצה עורפי שמוגדרת כברירת מחדל. כשיוצרים מפת URL, צריך לציין שירות לקצה העורפי שמוגדר כברירת מחדל או קטגוריית קצה עורפי שמוגדרת כברירת מחדל, אבל לא את שניהם. ברירת המחדל הזו מייצגת את שירות הקצה העורפי או את קטגוריית הקצה העורפי שאליה Google Cloud מופנות בקשות לכתובות URL עם שם מארח כלשהו, אלא אם יש כלל מארח רלוונטי.
כלל מארח (
hostRules). כלל מארח מפנה בקשות שנשלחות לשם מארח משויך אחד או יותר אל כלי התאמה לנתיבים יחיד (pathMatchers). החלק של שם המארח בכתובת URL מותאם בדיוק או מותאם באמצעות ביטויים רגולריים מול קבוצת שמות המארחים שהוגדרו בכלל המארח. בכלל של מארח ונתיב במפת URL, אם משמיטים את המארח, הכלל תואם לכל מארח מבוקש. כדי להפנות בקשות ל-http://example.net/video/hdלמתאים נתיבים, צריך כלל מארח יחיד שלפחות כולל את שם המארחexample.net. אותו כלל מארח יכול לטפל גם בבקשות לשמות מארחים אחרים, אבל הוא יפנה אותן לאותו רכיב להשוואת נתיבים.אם אתם צריכים להפנות בקשות למתאמי נתיבים שונים, אתם צריכים להשתמש בכללי מארח שונים. שני כללי מארח במפת URL לא יכולים לכלול את אותו שם מארח.
אפשר להתאים את כל שמות המארחים על ידי ציון התו הכללי לחיפוש
*בכלל המארח. לדוגמה, אם כתובות ה-URL הןhttp://example.org,http://example.net/video/hdו-http://example.com/audio, אפשר להתאים את כל שלושת שמות המארחיםexample.org,example.netו-example.comעל ידי ציון*בכלל המארח. אפשר גם להתאים חלק משם המארח באמצעות התו הכללי לחיפוש*. לדוגמה, כלל מארח*.example.netיותאם לשני שמות המארחnews.example.netו-finance.example.net.מספר היציאה. מאזני עומסים קלאסיים של אפליקציות (ALB) מטפלים במספרי יציאות באופן שונה ממאזני עומסים אחרים של אפליקציות. במקרה של מאזן עומסים קלאסי של אפליקציות (ALB), רק שם המארח בכתובת ה-URL נלקח בחשבון כשמבצעים התאמה של כלל מארח. לדוגמה, בקשות
example.netליציאה 8080 וליציאה 80 תואמות לכלל המארחexample.net. בכל שאר מאזני העומסים של האפליקציות, אפשר להשתמש בפרמטר Host rule כדי לציין מספר יציאה. לדוגמה, כדי להפנות בקשותexample.netליציאה 8080, צריך להגדיר את כלל המארח ל-example.net:8080.התאמת נתיבים (
pathMatchers). התאמת נתיבים היא פרמטר ההגדרה שאליו מתייחס כלל המארח. הוא מגדיר את הקשר בין החלק של הנתיב בכתובת URL לבין שירות לקצה העורפי או קטגוריית קצה עורפי שאמורים להציג את הבקשה. התאמה לנתיב מורכבת משני רכיבים:Path matcher default backend service או path matcher default backend bucket. לכל התאמה של נתיב, צריך לציין לפחות שירות לקצה העורפי שמוגדר כברירת מחדל או קטגוריית קצה עורפי שמוגדרת כברירת מחדל, אבל לא את שניהם. ערך ברירת המחדל הזה מייצג את שירות הקצה העורפי או את קטגוריית הקצה העורפי שאליהםGoogle Cloud מפנה בקשות לכתובות URL ששמות המארחים שלהן תואמים לכלל מארח שמשויך לכלי להתאמת נתיבים, ושנתיבי כתובות ה-URL שלהן לא תואמים לכלל נתיב בכלי להתאמת נתיבים.
כללי נתיבים. לכל התאמה לנתיב אפשר לציין כלל נתיב אחד או יותר, שהם צמדי מפתח/ערך שממפים נתיב כתובת ה-URL לשירות לקצה העורפי יחיד או לקטגוריית קצה עורפי.
אופרטורים גמישים להתאמת תבניות מאפשרים להתאים כמה חלקים של נתיב כתובת URL, כולל כתובות URL חלקיות וסיומות (סיומות של קבצים), באמצעות תחביר של תווים כלליים. האופרטורים האלה יכולים לעזור לכם כשאתם צריכים לנתב תנועה ולבצע שכתובים על סמך נתיבי כתובות URL מורכבים. אפשר גם לשייך רכיב נתיב אחד או יותר למשתנים עם שמות, ואז להפנות למשתנים האלה כשמשכתבים את כתובת ה-URL. בעזרת משתנים עם שמות, אפשר לשנות את הסדר של רכיבי כתובת ה-URL ולהסיר אותם לפני שהבקשה נשלחת לשרת המקור. פרטים נוספים מופיעים במאמר בנושא תווים כלליים, ביטויים רגולריים וכתובות URL דינמיות בכללי נתיב.
אם אתם צריכים יכולות ניתוב מתקדמות יותר, למשל אם אתם רוצים לנתב תנועה של כתובת URL ייחודית לכמה שירותים, אתם יכולים להשתמש בכללי ניתוב במקום בכללי נתיב.
כללי ניתוב. אפשר להשתמש בכללי ניתוב כחלופה לכללי נתיב כשצריך יכולות מתקדמות של ניתוב תנועה, כמו ניתוב תנועה על סמך נתיב כתובת ה-URL, כותרות HTTP ופרמטרים של שאילתות.
אפשר להגדיר כללי ניתוב באמצעות אופרטורים גמישים להתאמת תבניות ומשתנים עם שמות. האופרטורים האלה יכולים לעזור לכם כשאתם צריכים לנתב תנועה ולבצע שכתובים על סמך נתיבי כתובות URL מורכבים. פרטים נוספים זמינים במאמר בנושא תווים כלליים ואופרטורים להתאמת דוגמאות עיצוב בתבניות של נתיבים לכללי ניתוב.
אפשר גם להגדיר כללי ניתוב שיושוו לביטויים רגולריים שתואמים לנתיב, לפרמטרים של שאילתות או לכותרות בבקשה הנכנסת. פרטים נוספים מופיעים במאמר בנושא ביטויים רגולריים בכללי ניתוב.
מידע נוסף על אפשרויות ההגדרה של כללי ניתוב זמין במאמר כללי ניתוב מתקדמים של מארחים ונתיבים.
הקשר בין שם המארח לכלל המארח
שם מארח יכול להפנות רק לכלל מארח אחד.
כלל מארח אחד יכול לעבד כמה שמות מארחים.
הקשר בין כלל המארח לבין התאמת הנתיב
כמה כללי מארח יכולים להפנות לאותו התאמה לנתיב.
כלל מארח יכול להפנות רק למתאם נתיבים אחד.
כתובת URL וקשר לקצה העורפי
כל כתובת URL ייחודית מופנית לשירות לקצה העורפי אחד או לקטגוריית קצה עורפי אחת. לכן:
Google Cloud משתמש בחלק של שם המארח בכתובת URL כדי לבחור כלל מארח יחיד ואת כלי ההתאמה לנתיבים שאליו הוא מפנה.
כשמשתמשים בכללי נתיב בכלי להשוואת נתיבים, אי אפשר ליצור יותר מכלל נתיב אחד לאותו נתיב. לדוגמה, אי אפשר להפנות בקשות ל-
/videos/hdליותר משירות לקצה העורפי אחד או מקטגוריית קצה עורפי אחת. לשירותי בק-אנד יכולות להיות קבוצות של מופעי בק-אנד או קבוצות של נקודות קצה ברשת (NEGs) בבק-אנד באזורים שונים, ואפשר ליצור קטגוריות בק-אנד שמשתמשות בסוגי אחסון (storage class) של Multi-Regional Storage.כדי להפנות תנועת גולשים לכתובת URL ייחודית לכמה שירותים, אפשר להשתמש בכללי ניתוב במקום בכללי נתיב. אם מגדירים את הכלי להתאמת נתיבים עם כללי ניתוב להתאמות של כותרות או פרמטרים, אפשר להפנות כתובת URL ייחודית ליותר משירות לקצה העורפי אחד או לדלי אחד, על סמך התוכן של הכותרות או של פרמטרים של שאילתות בכתובת ה-URL.
באופן דומה, במאזני עומסים חיצוניים אזוריים של אפליקציות וב-Cloud Service Mesh, שירותי קצה עורפיים משוקללים בפעולות של מסלולי תעבורה יכולים להפנות את אותה כתובת URL לכמה שירותי קצה עורפיים או מאגרי מידע, בהתאם למשקלים שהוגדרו בשירות הקצה העורפי המשוקלל.
מפות ופרוטוקולים של כתובות URL
אפשר להשתמש באותה מפת URL, באותם כללי מארח ובאותם כלים להתאמת נתיבים כדי לעבד בקשות HTTP ו-HTTPS שנשלחות על ידי לקוחות, כל עוד גם Proxy יעד ל-HTTP וגם Proxy יעד ל-HTTPS מפנים למפת ה-URL.
מפת URL פשוטה
במפת URL הפשוטה ביותר יש רק שירות לקצה העורפי שמוגדר כברירת מחדל או קטגוריית קצה עורפי שמוגדרת כברירת מחדל. הוא לא מכיל כללי מארח ולא מכיל התאמות לנתיבים. כל כתובות ה-URL המבוקשות מטופלות על ידי שירות הקצה העורפי שמוגדר כברירת מחדל או על ידי קטגוריית הקצה העורפי שמוגדרת כברירת מחדל (בהתאם למה שהגדרתם).
אם מגדירים שירות עורפי שמוגדר כברירת מחדל, Google Cloud מפנה בקשות לקבוצות המופעים העורפיים או לקבוצות ה-NEG העורפיות שלו בהתאם להגדרות של שירות העורפי.
סדר הפעולות
עבור שם מארח ונתיב נתונים מסוימים בכתובת URL שהתקבלה, Google Cloud משתמש בהליך הבא כדי להפנות את הבקשה לשירות לקצה העורפי או לקטגוריית קצה עורפי הנכונים, כפי שהוגדר במפת URL:
אם מפת ה-URL לא מכילה כלל מארח לשם המארח של כתובת ה-URL,Google Cloud מפנה את הבקשות לשירות לקצה העורפי שמוגדר כברירת מחדל במפת ה-URL או לקטגוריית קצה עורפי שמוגדרת כברירת מחדל, בהתאם למה שהגדרתם.
אם מפת URL מכילה כלל מארח שכולל את שם המארח של כתובת ה-URL, המערכת בודקת את התאמת הנתיב שאליו מפנה כלל המארח:
אם בבודק ההתאמה של הנתיב יש כלל נתיב שתואם בדיוק לנתיב של כתובת ה-URL, Google Cloud הבקשות מופנות לשירות הקצה העורפי או לקטגוריית קצה עורפי של כלל הנתיב הזה.
אם התנאי להתאמת נתיב לא מכיל כלל נתיב שתואם בדיוק לנתיב של כתובת ה-URL, אבל הוא מכיל כלל נתיב שמסתיים ב-
/*והקידומת שלו תואמת לקטע הארוך ביותר בנתיב של כתובת ה-URL, אז Google Cloudמפנה בקשות לשירות לקצה העורפי או לקטגוריית קצה עורפי של כלל הנתיב הזה. לדוגמה, אם מפת URL מכילה שני כללים להתאמת נתיבים:/video/hd/movie1ו-/video/hd/*, וכתובת ה-URL מכילה את הנתיב המדויק/video/hd/movie1, היא תותאם לכלל הנתיב הזה.אם אף אחד מהתנאים הקודמים לא מתקיים, Google Cloud מפנה בקשות לשירות לקצה העורפי שמוגדר כברירת מחדל או לקטגוריית קצה עורפי שמוגדרת כברירת מחדל של התאמת הנתיבים, בהתאם למה שהגדרתם.
אילוצים בהגדרת מפת URL
בקטעים הבאים מתוארות מגבלות מסוימות על התצורה של רכיבי מפת URL.
התאמה של ביטויים רגולריים בכללי מארח וכללי ניתוב
כללי מארח מאפשרים להשוות את החלק של שם המארח בכתובת URL מול קבוצת שמות המארחים שהוגדרו בכלל המארח. בשדה hostRules[].hosts[] אפשר להשתמש בשם מארח ספציפי או בתו כללי לחיפוש * כדי להתאים אותו לשם המארח בבקשה הנכנסת.
כללי ניתוב מאפשרים להגדיר כללי התאמה שיכולים להתאים לביטוי רגולרי בנתיב, במחרוזת השאילתה או בכותרת בבקשה הנכנסת. כללי ניתוב תומכים בשימוש בביטויים רגולריים בשדות הבאים של מפת URL:
-
pathMatchers[].routeRules[].matchRules[].regexMatch: ביטוי רגולרי שמשמש להתאמה של הנתיב של הבקשה הנכנסת. -
pathMatchers[].routeRules[].matchRules[].headerMatches[].regexMatch: ביטוי רגולרי שמכיל פרדיקט שתואם לכותרת של הבקשה הנכנסת. -
pathMatchers[].routeRules[].matchRules[].queryParameterMatches[].regexMatch: ביטוי רגולרי שמכיל פרדיקט שתואם לפרמטר שאילתה של הבקשה הנכנסת.
בקשה נחשבת כבקשה שתואמת ל-routeRule אם מתקיים אחד מהתנאים של matchRules. עם זאת, פרדיקטים בתוך matchRule נתון הם בעלי סמנטיקה של AND.
כלומר, כל התנאים ב-matchRule צריכים להתקיים כדי שהבקשה תתאים לכלל.
הערות נוספות לגבי השימוש:
יש תמיכה בביטויים רגולריים רק במוצרים הבאים:
- מאזני עומסים פנימיים אזוריים של אפליקציות (ALB)
- מאזני עומסים פנימיים של אפליקציות (ALB) שפועלים בכמה אזורים
- מאזני עומסים חיצוניים אזוריים של אפליקציות (ALB)
מאזני עומסים גלובליים וקלאסיים של אפליקציות (ALB) לא תומכים בביטויים רגולריים.
כדי ליצור ביטויים רגולריים, צריך להשתמש בתחביר של RE2. לרשימה המלאה של המגבלות והאופרטורים שמותרים במפות של כתובות URL, אפשר לעיין במאמר מפרטי RE2 למפות של כתובות URL.
התאמה של ביטויים רגולריים היא תהליך יקר מבחינת צריכת הזיכרון והשהיות בעיבוד הבקשות. אם בוחרים להשתמש בהתאמה של ביטויים רגולריים, צריך לקחת בחשבון את הירידה בביצועים כשמתכננים את הפריסה. לדוגמה, אם יש לכם מפת URL עם ביטוי רגולרי יחיד, אתם יכולים לצפות לגידול של 100 מיקרו-שניות בחביון של מאזן העומסים לכל בקשה. אם מפת URL שלכם כוללת 5 ביטויים רגולריים שצריך להתאים, אפשר לצפות לעלייה של 200 מיקרו-שניות בערך זמן האחזור לכל בקשה.
דוגמה 1: שימוש בביטוי רגולרי להתאמת נתיב
הנתיב נחשב לתואם אם הוא תואם לביטוי הרגולרי שצוין על ידי regexMatch אחרי הסרת פרמטרים של שאילתות ועוגנים שסופקו עם כתובת ה-URL המקורית. לדוגמה, במיפויים הבאים של כתובות URL לדוגמה, כלל הניתוב
הביטוי הרגולרי, /videos/hd.*, יחול על כתובת URL עם הנתיב
/videos/hd-abcd?key=245.
defaultService: projects/example-project/global/backendServices/org-site
name: rule-match-url-map
hostRules:
- hosts:
- '*' # Match any host
pathMatcher: video-matcher
- hosts:
- example.net
pathMatcher: video-matcher
pathMatchers:
- name: video-matcher
# Optional: default service for this path matcher if no routeRules match
defaultService: projects/example-project/global/backendServices/video-site
routeRules:
- priority: 100000
matchRules:
- regexMatch: /videos/hd.*
routeAction:
weightedBackendServices:
- backendService: projects/example-project/global/backendServices/video-hd
weight: 100
הסבר על כל שדה במפת URL לדוגמה:
-
defaultService: מציין את שירות לקצה העורפי שמוגדר כברירת מחדל לשימוש אם אף כלל אחר במפת URL לא תואם לבקשה הנכנסת. -
name: מקצה את השם rule-match-url-map להגדרת מפת ה-URL הזו. -
hostRules: מגדיר רשימה של כללים להתאמה של כותרת המארח של בקשות נכנסות. הכלל הראשון תואם לכל מארח (*) ומפנה תנועה אלpathMatcherבשם video-matcher. הכלל השני מתאים באופן ספציפי למארחexample.netומפנה תנועה גם ל-path matcher בשם video-matcher. -
pathMatchers: מגדיר רשימה של התאמות נתיבים עם שם. -
name: מגדיר התאמה של נתיב בשם video-matcher. -
defaultService: מגדיר את שירות ברירת המחדל עבור התאמת הנתיב הזה. השירות הזה משמש אם בקשה תואמת לכללי המארח שמפנים אל video-matcher, אבל לא תואמת לאף אחד מהכללים שבתוכוrouteRules. -
routeRules: מכיל רשימה של כללים להתאמה של נתיב כתובת ה-URL. -
priority: מגדיר את העדיפות של הכלל הזה ל-100000. הערכת הכללים מתבצעת לפי סדר העדיפות, מהנמוך לגבוה. -
matchRules: מכיל את התנאים להתאמה של כלל הניתוב הזה. -
regexMatch: התנאי הזה בודק אם נתיב כתובת ה-URL תואם לביטוי הרגולרי/videos/hd.*(לדוגמה, /videos/hd ו-/videos/hd-caching). -
routeAction: מציינת את הפעולה שתתבצע אם כל התנאים ב-matchRulesיתקיימו. -
weightedBackendServices: מפזר את התנועה בין רשימה של שירותי קצה עורפיים על סמך משקלים. -
backendService: מציין את שירות ה-Backend שאליו התנועה מנותבת. -
weight: מקצה משקל של 100 לשירות הקצה העורפי הזה. מכיוון שזה השירות היחיד ברשימה, הוא יקבל 100% מהתנועה שתואמת ל-routeRule הזה.
במפת ה-URL הבאה מוצגת דוגמה דומה בלי שימוש ב-routeAction.
defaultService: projects/example-project/global/backendServices/video-site
name: path-matcher-videos
routeRules:
matchRules:
- regexMatch: /videos/hd.*
priority: 100000
service: projects/example-project/global/backendServices/video-hd
דוגמה 2: שימוש בביטוי רגולרי להתאמת כותרות
הכותרת נחשבת כהתאמה אם הערך של הכותרת תואם לביטוי הרגולרי שצוין על ידי regexMatch. לדוגמה, במיפוי כתובות ה-URL לדוגמה הבא, הביטוי הרגולרי של שם הכותרת, .*Android.*-hd, יחול על בקשה עם הכותרת User-Agent:123Androidabc-hd.
defaultService: projects/example-project/regions/us-central1/backendServices/default-backend-service
name: header-match-url-map
hostRules:
- hosts:
- '*' # Match any host
pathMatcher: header-matcher
pathMatchers:
- name: header-matcher
# Optional: default service for this path matcher if no routeRules match
defaultService: projects/example-project/regions/us-central1/backendServices/default-backend-service
routeRules:
- priority: 1
matchRules:
- headerMatches:
- headerName: User-Agent
regexMatch: .*Android.*-hd
# This prefix match applies to the path part of the URL
- prefixMatch: /video/
# service: can be used instead of routeAction if no other actions are needed
service: projects/example-project/regions/us-central1/backendServices/video-backend-service
# Alternatively, use routeAction to specify the service:
# routeAction:
# weightedBackendServices:
# - backendService: projects/example-project/regions/us-central1/backendServices/video-backend-service
# weight: 100
הסבר על כל שדה במפת URL לדוגמה:
-
defaultService: מציין את שירות לקצה העורפי שמוגדר כברירת מחדל לשימוש אם אף כלל אחר במפת URL לא תואם לבקשה הנכנסת. -
name: מקצה את השם header-match-url-map להגדרת מפת ה-URL הזו. -
hostRules: מגדיר רשימה של כללים להתאמת כותרת המארח של בקשות נכנסות. הכלל תואם לכל מארח ('*') ומפנה את התנועה אלpathMatchernamed header-matcher. -
pathMatchers: מגדיר רשימה של התאמות נתיבים עם שם. -
name: מגדיר כלי להתאמת נתיבים בשם header-matcher. -
defaultService: מגדיר את שירות ברירת המחדל להתאמת הנתיב הזה. השירות הזה משמש אם בקשה תואמת לכלל המארח אבל לא תואמת לאף אחד מה-routeRulesבתוך התאמת הנתיב הזו. -
routeRules: מכיל רשימה של כללים להתאמת בקשות נכנסות על סמך כותרות ונתיבים. -
priority: מגדיר את העדיפות של הכלל הזה ל-1. הערכת הכללים מתבצעת לפי סדר העדיפות, מהנמוכה ביותר לגבוהה ביותר. -
matchRules: מכיל רשימה של תנאים שכולם צריכים להיות נכונים כדי שהכלל יתאים. -
headerMatches: מציין תנאים על סמך כותרות הבקשה. -
headerName: חיפוש הכותרת User-Agent. -
regexMatch: בודק אם הערך של כותרת User-Agent תואם לביטוי הרגולרי.*Android.*-hd. התנאי הזה יתאים לסוכני משתמש שמציינים מכשיר Android, עם מחרוזת שמכילה את הערך '-hd'. prefixMatch: אם הערך הוא/video/, התנאי הזה בודק אם נתיב כתובת ה-URL מתחיל ב-/video/.-
service: אם כל התנאים שלmatchRulesמתקיימים, התנועה מופנית לשירות הקצה העורפי הזה. - הקטע
routeActionעם הערות מציג דרך חלופית לציין את שירות הקצה העורפי, שתידרש אם תצטרכו להגדיר פעולות אחרות של מסלול כמו שכתוב של כתובות URL, המרות של כותרות או שירותים עורפיים משוקללים.
דוגמה 3: שימוש בביטוי רגולרי כדי להתאים לפרמטרים של שאילתה
פרמטר השאילתה נחשב לתואם אם הערך של הנתיב עם פרמטרים של שאילתה תואם לביטוי הרגולרי שצוין על ידי regexMatch. לדוגמה, במפת URL לדוגמה הבאה, הביטוי הרגולרי של פרמטר השאילתה, /im.*/.*.html, יחול על כתובת URL עם פרמטרים של שאילתה כמו /images/random_page.html?param1=param_value_123abc-hd.
defaultService: projects/example-project/regions/us-central1/backendServices/sample-bs
name: query-match-url-map
hostRules:
- hosts:
- '*' # Match any host
pathMatcher: query-matcher
pathMatchers:
- name: query-matcher
# Optional: default service for this path matcher if no routeRules match
defaultService: projects/example-project/regions/us-central1/backendServices/sample-bs
routeRules:
- priority: 1
matchRules:
- queryParameterMatches:
- name: param1 #parameter name in query
regexMatch: param_value_.*-hd
# This regexMatch applies to the path part of the URL
- regexMatch: /im.*/.*.html
# Directs traffic to this service if all conditions in matchRules are met
service: projects/example-project/regions/us-central1/backendServices/sample-images-bs
הסבר על כל שדה במפת URL לדוגמה:
-
hostRules: מוסיף כלל להתאמה לכל המארחים (*) ומפנה את התנועה אלpathMatcherבשם query-matcher. -
pathMatchers: הגדרה של כלי להתאמת נתיבים בשם query-matcher. -
routeRules: ממקם את הבלוקrouteRulesשסופק בתוך query-matcher. -
priority: מגדיר את העדיפות של הכלל הזה ל-1. הערכת הכללים מתבצעת לפי סדר העדיפות, מהנמוכה ביותר לגבוהה ביותר. -
matchRules: מכיל את התנאים שלrouteRules. -
queryParameterMatches: בודק אם פרמטר השאילתה בשם param1 תואם לביטוי הרגולריparam_value_.*-hd. -
regexMatch: הביטוי הרגולרי/im.*/.*.htmlחל על הנתיב של כתובת ה-URL (לדוגמה, /images/random_page.html), לפני מחרוזת השאילתה. -
service: מציין את השירות לקצה העורפי שבו יש להשתמש אם כל התנאים ב-matchRulesמתקיימים.
תווים כלליים, ביטויים רגולריים וכתובות URL דינמיות בכללי נתיב והתאמה לפי קידומת
כלל נתיב (
pathMatchers[].pathRules[]) יכול לכלול תו כללי לחיפוש (*) רק אחרי תו של קו נטוי (/). לדוגמה,/videos/*ו-/videos/hd/*הם כללים תקינים לנתיבים, אבל/videos*ו-/videos/hd*לא.כללי נתיב לא משתמשים בביטויים רגולריים או בהתאמה של תת-מחרוזות. אפשר להשתמש באופרטורים פשוטים להתאמת נתיבים ב-PathTemplateMatch. לדוגמה, כללי נתיב ל-
/videos/hdאו ל-/videos/hd/*לא חלים על כתובת URL עם הנתיב/video/hd-abcd. עם זאת, כלל נתיב עבור/video/*חל על הנתיב הזה.התאמה לפי תחילית (
pathMatchers[].routeRules[].matchRules[].prefixMatch) לא מתייחסת ל-*כאל תו כללי לחיפוש, אלא כאל תו מילולי.התכונות של התאמת נתיבים (ובאופן כללי, של מיפוי כתובות URL) לא פועלות כמו ההוראה
<LocationMatch>של Apache. אם יש לכם אפליקציה שמייצרת נתיבי כתובות URL דינמיים עם קידומת משותפת, כמו/videos/hd-abcdו-/videos/hd-pqrs, ואתם צריכים לשלוח בקשות שמופנות לנתיבים האלה לשירותי קצה עורפי שונים, יכול להיות שלא תוכלו לעשות זאת באמצעות מפת URL. במקרים שבהם יש רק כמה כתובות URL דינמיות אפשריות, אפשר ליצור התאמה לנתיב עם קבוצה מוגבלת של כללי נתיב. במקרים מורכבים יותר, צריך לבצע התאמה של ביטויים רגולריים מבוססי-נתיב בשרתי הקצה העורפיים.
תווים כלליים לחיפוש ואופרטורים להתאמת דפוסים בתבניות של נתיבים לכללי ניתוב
אופרטורים גמישים להתאמת תבניות מאפשרים להתאים כמה חלקים של נתיב כתובת ה-URL, כולל כתובות URL חלקיות וסיומות (סיומות קבצים), באמצעות תחביר של תווים כלליים. האופרטורים האלה יכולים לעזור לכם כשאתם צריכים לנתב תנועה ולבצע שכתובים על סמך נתיבי כתובות URL מורכבים. אפשר גם לשייך רכיב נתיב אחד או יותר למשתנים עם שמות, ואז להפנות למשתנים האלה כשכותבים מחדש את כתובת ה-URL. בעזרת משתנים עם שמות, אפשר לשנות את הסדר של רכיבי כתובת URL ולהסיר אותם לפני שהבקשה נשלחת למקור.
התאמת תבניות עם תווים כלליים לחיפוש נתמכת רק במוצרים הבאים:
- מאזן עומסים גלובלי חיצוני של אפליקציות (ALB)
- מאזן עומסים חיצוני אזורי של אפליקציות (ALB)
- מאזן עומסים פנימי אזורי של אפליקציות (ALB)
- מאזן עומסים פנימי של אפליקציות (ALB) שפועל בכמה אזורים
- Cloud Service Mesh
בדוגמה הבאה, התעבורה מנותבת לאפליקציה למסחר אלקטרוני שיש לה שירותים נפרדים לפרטי עגלת הקניות ולפרטי המשתמש.
אפשר להגדיר את routeRules באמצעות אופרטורים גמישים להתאמת תבניות ומשתנים עם שמות, כדי לשלוח את המזהה הייחודי של המשתמש לדף הפרטים של חשבון המשתמש ואת פרטי עגלת הקניות של המשתמש לשירות עיבוד עגלות קניות אחרי שכתוב כתובת ה-URL.
pathMatchers:
- name: cart-matcher
routeRules:
- description: CartService
matchRules:
- pathTemplateMatch: '/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}'
service: cart-backend
priority: 1
routeAction:
urlRewrite:
pathTemplateRewrite: '/{username}-{cartid}/'
- name: user-matcher
routeRules:
- description: UserService
matchRules:
- pathTemplateMatch: '/xyzwebservices/v2/xyz/users/*/accountinfo/*'
service: user-backend
priority: 1
מה קורה כשלקוח מבקש /xyzwebservices/v2/xyz/users/abc@xyz.com/carts/FL0001090004/entries/SJFI38u3401nms?fields=FULL&client_type=WEB, שכולל גם פרטי משתמש וגם פרטי עגלת קניות:
- נתיב הבקשה תואם ל-
pathTemplateMatchב-cart-matcherpathMatcher. המשתנה{username=*}תואם ל-abc@xyz.comוהמשתנה{cartid=**}תואם ל-FL0001090004/entries/SJFI38u3401nms. - הפרמטרים של השאילתה מופרדים מהנתיב, הנתיב נכתב מחדש על סמך
pathTemplateRewrite, והפרמטרים של השאילתה מצורפים לנתיב שנכתב מחדש. אנחנו צריכים להשתמש רק באותם משתנים שבהם השתמשנו כדי להגדיר אתpathTemplateMatchבpathTemplateRewriteשלנו. - הבקשה שנכתבה מחדש נשלחת אל
cart-backendעם נתיב כתובת ה-URL שנכתב מחדש:/abc@xyz.com-FL0001090004/entries/SJFI38u3401nms?fields=FULL&client_type=WEB.
מה קורה כשלקוח שולח בקשה מסוג /xyzwebservices/v2/xyz/users/abc%40xyz.com/accountinfo/abc-1234 במקום זאת, בקשה שמכילה רק מידע על המשתמש והחשבון:
- נתיב הבקשה תואם ל-
pathTemplateMatchב-pathMatcheruser-matcher. המחרוזת הראשונה*תואמת ל-abc%40xyz.comוהמחרוזת השנייה*תואמת ל-abc-1234. - הבקשה נשלחת אל
user-backend.
בטבלה הבאה מפורט התחביר של דפוסי תבניות נתיבים.
| אופרטור | התאמות |
|---|---|
* |
פלחי נתיב בודדים, לא כולל תווי ההפרדה של הנתיב / שמקיפים אותם. |
** |
התאמה לאפס תווים או יותר, כולל כל מפריד נתיבים
/ תווים בין כמה מקטעי נתיב. אם כוללים אופרטורים אחרים, האופרטור ** חייב להיות האופרטור האחרון. |
{name} או {name=*} |
משתנה עם שם שתואם לקטע נתיב אחד. מתאים לפלח נתיב יחיד, לא כולל את תווי ההפרדה של הנתיב / שמקיפים אותו. |
{name=news/*} |
משתנה עם שם שתואם באופן מפורש לשני פלחים בנתיב:
news ופלח עם wildcard *. |
{name=*/news/*} |
משתנה עם שם שתואם לשלושה פלחים של נתיב. |
{name=**} |
משתנה עם שם שתואם לאפס תווים או יותר. אם הוא מופיע, הוא חייב להיות האופרטור האחרון. |
כשמשתמשים באופרטורים האלה להתאמה גמישה לתבניות, חשוב לזכור את הנקודות הבאות:
- אפשר לשלב כמה אופרטורים בתבנית אחת.
- הפרמטרים של השאילתה מופרדים מהנתיב, הנתיב נכתב מחדש על סמך
pathTemplateRewrite, והפרמטרים של השאילתה מצורפים לנתיב שנכתב מחדש. - הבקשות לא עוברות נירמול של קידוד באחוזים. לדוגמה, כתובת URL עם תו לוכסן (%2F) שמקודד באחוזים לא מפוענחת לפורמט לא מקודד.
- כל שם של משתנה, כמו
{segment}או{region}, יכול להופיע רק פעם אחת באותה תבנית. משתנים מרובים עם אותו שם לא תקינים ויידחו. - שמות המשתנים הם תלויי אותיות רישיות (case-sensitive) וחייבים להיות מזהים תקינים. כדי לבדוק אם שם משתנה תקין, מוודאים שהוא תואם לביטוי הרגולרי
^[a-zA-Z][a-zA-Z0-9_]*$.-
{API}, {api}ו-{api_v1}הם מזהים תקינים. הם מזהים שלושה משתנים שונים. - המזהים
{1},{_api}וגם{10alpha}לא תקינים.
-
- יש מגבלה של חמישה אופרטורים לכל תבנית.
כדי לבצע שכתוב אופציונלי של כתובת URL לפני שהבקשה נשלחת למקור, אפשר להשתמש באותם משתנים שהגדרתם כדי לתעד נתיב.
לדוגמה, אתם יכולים להפנות למשתנים, לשנות את הסדר שלהם או להשמיט אותם בשדה pathTemplateRewrite כשמגדירים את urlRewrite.
כשמשתמשים במשתנים ובאופרטורים להתאמת תבניות גמישה לשינוי כתובות URL, חשוב לזכור את הנקודות הבאות:
- כשכותבים מחדש כתובת URL, אפשר להשמיט משתנים אם הם לא נדרשים כחלק מכתובת ה-URL שנכתבת מחדש.
- לפני שמתבצעות פעולות שכתוב, אפשר לזהות את כתובת ה-URL שנשלחה על ידי הלקוח בשרת המקור על ידי בדיקת כותרות התגובה. כתובת ה-URL המקורית של הלקוח מאוכלסת בכותרת
x-client-request-urlובכותרתx-envoy-original-path.
דוגמה לתהליך עבודה עם מפת URL ומאזן עומסים חיצוני של אפליקציות (ALB)
בדוגמה הבאה אפשר לראות את סדר הפעולות של מיפוי כתובות URL. בדוגמה הזו מוגדרת רק מפת URL למאזן עומסים קיים של אפליקציות (ALB) בגרסה הקלאסית. כדי לפשט את הרעיון, הוא משתמש רק בשירותי קצה עורפיים, אבל אפשר להשתמש במקום זאת בדלי קצה עורפיים. כדי ללמוד איך ליצור את הרכיבים האחרים של מאזן העומסים, ראו יצירת מאזן עומסים קלאסי לאפליקציות.
מידע נוסף על יצירה והגדרה של מיפוי כתובות URL עם התאמה של נתיבים וכללי מארח זמין gcloud compute url-maps createבמסמכי התיעוד.
יוצרים מפת URL למאזן העומסים ומציינים שירות לקצה העורפי שמוגדר כברירת מחדל. בדוגמה הזו נוצרת מפת URL בשם
video-org-url-mapשמפנה לשירות קיים של קצה עורפי בשםorg-site.gcloud compute url-maps create video-org-url-map \ --default-service=org-siteיוצרים התאמה לנתיב בשם
video-matcherעם המאפיינים הבאים:- שירות ברירת המחדל לקצה העורפי הוא
video-site, שירות קיים לקצה העורפי. - מוסיפים כללי נתיב שמפנים בקשות לנתיב המדויק של כתובת ה-URL
/video/hdאו לתחילית של נתיב כתובת ה-URL/video/hd/*לשירות לקצה העורפי קיים בשםvideo-hd. - מוסיפים כללי נתיב שמפנים בקשות לנתיב המדויק של כתובת ה-URL
/video/sdאו לתחילית של נתיב כתובת ה-URL/video/sd/*לשירות לקצה העורפי קיים בשםvideo-sd.
gcloud compute url-maps add-path-matcher video-org-url-map \ --path-matcher-name=video-matcher \ --default-service=video-site \ --path-rules=/video/hd=video-hd,/video/hd/*=video-hd,/video/sd=video-sd,/video/sd/*=video-sd- שירות ברירת המחדל לקצה העורפי הוא
יוצרים כלל מארח עבור שם המארח
example.netשמפנה למתאם הנתיביםvideo-matcher.gcloud compute url-maps add-host-rule video-org-url-map \ --hosts=example.net \ --path-matcher-name=video-matcher
מפת ה-URL video-org-url-map צריכה להיראות כך:
gcloud compute url-maps describe video-org-url-map
creationTimestamp: '2021-03-05T13:34:15.833-08:00'
defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/org-site
fingerprint: mfyJIT7Zurs=
hostRules:
- hosts:
- '*'
pathMatcher: video-matcher
- hosts:
- example.net
pathMatcher: video-matcher
id: '8886405179645041976'
kind: compute#urlMap
name: video-org-url-map
pathMatchers:
- defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/video-site
name: video-matcher
pathRules:
- paths:
- /video/hd
- /video/hd/*
service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/video-hd
- paths:
- /video/sd
- /video/sd/*
service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/video-sd
selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/video-org-url-map
מפת URL video-org-url-map מפנה כתובות URL מבוקשות לשרתי קצה באופן הבא.
בטבלה הבאה מוסבר עיבוד הבקשה שמוצג בתרשים שלמעלה.
| שם המארח | נתיבים של כתובות URL | שירות לקצה העורפי שנבחר | הסיבה לבחירה |
|---|---|---|---|
שם המארח:example.org וכל שמות המארחים האחרים
שונה מexample.net |
כל הנתיבים | org-site |
שם המארח לא מופיע באף כלל מארח במפת URL, ולכן הבקשה מופנית לשירות לקצה העורפי שמוגדר כברירת מחדל במפת URL. |
שם המארח:example.net |
/video/video/examples |
video-site |
הבקשה מועברת לשירות לקצה העורפי של ברירת המחדל כי אין כלל נתיב ל-/video/ או ל-/video/*. כלל המארח example.net מפנה למתאים נתיבים, אבל למתאים הנתיבים הזה אין כללי נתיבים שיחולו על הנתיבים האלה.
|
שם המארח:example.net |
/video/hd/video/hd/movie1/video/hd/movies/movie2כתובות URL אחרות שמתחילות ב- /video/hd/* |
video-hd |
כלל מארח עבור example.net מפנה ל-path matcher שכללי הנתיב שלו מפנים בקשות לנתיבי כתובות URL שתואמים בדיוק ל-/video/hd או שמתחילים ב-/video/hd/* לשירות הקצה העורפי video-hd. |
שם המארח:example.net |
/video/sd/video/sd/show1/video/sd/shows/show2כתובות URL אחרות שמתחילות ב- /video/sd/* |
video-sd |
כלל מארח עבור example.net מפנה ל-path matcher שכללי הנתיב שלו מפנים בקשות לנתיבי כתובות URL שתואמים בדיוק ל-/video/sd או שמתחילים ב-/video/sd/* לשירות הקצה העורפי video-sd. |
הפניות לכתובות URL אחרות
הפניה אוטומטית של כתובת URL מפנה את המבקרים בדומיין מכתובת URL אחת לכתובת URL אחרת.
הפניה אוטומטית של כתובת URL שמוגדרת כברירת מחדל לא מותנית בהתאמה לתבנית מסוימת בבקשה הנכנסת. לדוגמה, יכול להיות שתרצו להשתמש בהפניה אוטומטית של כתובת URL כברירת מחדל כדי להפנות כל שם מארח לשם מארח שתבחרו.
יש כמה דרכים ליצור הפניה אוטומטית לכתובת URL, כמו שמתואר בטבלה הבאה.
| Method | הגדרות אישיות |
|---|---|
| הפניה אוטומטית לכתובת URL שמוגדרת כברירת מחדל במפה של כתובות URL | רמה עליונה defaultUrlRedirect |
| הפניה אוטומטית לכתובת URL שמוגדרת כברירת מחדל של כלי להתאמת נתיבים | pathMatchers[].defaultUrlRedirect[] |
| הפניה אוטומטית של כתובת URL של כלל נתיב של התאמת נתיבים | pathMatchers[].pathRules[].urlRedirect |
| הפניה אוטומטית של כתובת URL של כלל ניתוב של התאמת נתיבים | pathMatchers[].routeRules[].urlRedirect |
בתוך defaultUrlRedirect או urlRedirect, הפקודה pathRedirect תמיד פועלת באופן הבא:
- נתיב הבקשה כולו מוחלף בנתיב שאתם מציינים.
בתוך defaultUrlRedirect או urlRedirect, האופן שבו prefixRedirect פועל תלוי באופן השימוש בו:
- אם משתמשים ב-
defaultUrlRedirect,prefixRedirectהוא למעשה קידומת שנוספת לפני, כי הנתיב התואם הוא תמיד/. - אם משתמשים ב-
urlRedirectבכלל נתיב או בכלל נתיב של התאמת נתיבים,prefixRedirectהוא החלפה של קידומת על סמך ההתאמה של הנתיב המבוקש כפי שמוגדר בכלל הנתיב או בכלל הנתיב של התאמת הנתיבים.
דוגמאות להפניות אוטומטיות
בטבלה הבאה מופיעות כמה דוגמאות להגדרות של הפניות אוטומטיות. בעמודה השמאלית מוצגת הגדרת ה-API להפניה אוטומטית של כתובת URL שמוגדרת כברירת מחדל.
| אתם רוצים | ההפניה האוטומטית מתבצעת באמצעות כתובת URL שמוגדרת כברירת מחדל |
|---|---|
| הפניה אוטומטית מ-HTTP ל-HTTPS הפניה אוטומטית http://host.name/path אל https://host.name/path |
kind: compute#urlMap
name: web-map-http
defaultUrlRedirect:
httpsRedirect: True
|
| הפניה אוטומטית מ-HTTP ל-HTTPS + Host Redirect http://any-host-name/path to https://www.example.com/path |
kind: compute#urlMap
name: web-map-http
defaultUrlRedirect:
httpsRedirect: True
hostRedirect: "www.example.com"
|
| HTTP-to-HTTPS + Host redirect + Full path redirect Redirect http://any-host-name/path to https://www.example.com/newPath |
kind: compute#urlMap
name: web-map-http
defaultUrlRedirect:
httpsRedirect: True
hostRedirect: "www.example.com"
pathRedirect: "/newPath"
|
| הפניה מ-HTTP ל-HTTPS + הפניה מחדש של מארח + הפניה מחדש של קידומת הפניה מחדש http://any-host-name/originalPath אל https://www.example.com/newPrefix/originalPath |
kind: compute#urlMap
name: web-map-http
defaultUrlRedirect:
httpsRedirect: True
hostRedirect: "www.example.com"
prefixRedirect: "/newPrefix"
|
בקטע הקוד הבא מופיע חלק מהקוד עם הערות לכל משאב API:
defaultUrlRedirect: redirectResponseCode: MOVED_PERMANENTLY_DEFAULT httpsRedirect: True # True if you want https://, false if you want http:// hostRedirect: "new-host-name.com" # Omit to keep the requested host pathRedirect: "/new-path" # Omit to keep the requested path; mutually exclusive to prefixRedirect prefixRedirect: "/newPrefix" # Omit to keep the requested path; mutually exclusive to pathRedirect stripQuery: False # True to omit everything in the URL after ? ...
המאמרים הבאים
כדי להוסיף, לאמת, לבדוק, לרשום או למחוק מפת URL, אפשר לעיין במאמר בנושא שימוש במפות URL.
מידע על מיפוי כללי ניתוב באמצעות Cloud Service Mesh זמין במאמר סקירה כללית על מיפוי כללי ניתוב ב-Cloud Service Mesh.