Nextcloud בתוך ומחוץ OpenLiteSpeed: הגדרת פרוקסי הפוך
כיצד אוכל להגדיר את OpenLiteSpeed להפוך פרוקסי ל-Nextcloud ברשת הפנימית?
באופן מפתיע, חיפוש ב-Habré עבור OpenLiteSpeed לא נותן כלום! אני ממהר לתקן את העוול הזה, כי LSWS הוא שרת אינטרנט הגון. אני אוהב את זה בגלל המהירות שלו וממשק ניהול האינטרנט המפואר שלו:
למרות ש-OpenLiteSpeed מפורסם ביותר כ"מאיץ" של וורדפרס, במאמר של היום אראה שימוש ספציפי למדי בו. כלומר פרוקסי הפוך של בקשות (פרוקסי הפוך). אתה אומר שזה יותר נפוץ להשתמש ב-nginx בשביל זה? אני אסכים. אבל זה כל כך כואב שהתאהבנו ב-LSWS!
פרוקסי זה בסדר, אבל איפה? בשירות לא פחות נפלא - Nextcloud. אנו משתמשים ב-Nextcloud כדי ליצור "ענני שיתוף קבצים" פרטיים. לכל לקוח, אנו מקצים VM נפרד עם Nextcloud, ואנחנו לא רוצים לחשוף אותם "בחוץ". במקום זאת, אנו מבקשים פרוקסי דרך פרוקסי הפוך משותף. פתרון זה מאפשר:
1) הסר את השרת שבו מאוחסנים נתוני הלקוח מהאינטרנט ו
2) שמור כתובות IP.
התוכנית נראית כך:
ברור שהתכנית מפושטת, כי ארגון תשתית שירותי האינטרנט אינו הנושא של המאמר של היום.
גם במאמר זה אשמיט את ההתקנה ואת התצורה הבסיסית של ה-nextcloud, במיוחד מכיוון שיש חומרים בנושא זה ב-Habré. אבל אני בהחלט אראה את ההגדרות, שבלעדיהן Nextcloud לא יעבוד מאחורי פרוקסי.
בהתחשב you
Nextcloud מותקן על מארח 1 ומוגדר לעבוד על http (ללא SSL), יש לו רק ממשק רשת מקומית וכתובת IP "אפורה" 172.16.22.110.
בואו נגדיר את OpenLiteSpeed על מארח 2. יש לו שני ממשקים, חיצוני (נראה לאינטרנט) ופנימי עם כתובת IP ברשת 172.16.22.0/24
כתובת ה-IP של ממשק חיצוני של Host 2 היא שם DNS cloud.connect.link
sudo ufw לאפשר ssh
ברירת המחדל של sudo ufw לאפשר יציאה
sudo ufw ברירת מחדל לדחות כניסה
sudo ufw אפשר http
sudo ufw לאפשרhttps
sudo ufw לאפשר מ מארח הניהול שלך לכל יציאה 7080
לאפשר
הגדר את OpenLiteSpeed כפרוקסי הפוך.
בואו ניצור ספריות תחת הווירטואלי המארח.
cd /usr/local/lsws/
sudo mkdirc cloud.connect.link
cd cloud.connect.link/
sudo mkdir {conf,html,logs}
sudo chown lsadm:lsadm ./conf/
בואו נגדיר את המארח הוירטואלי מממשק האינטרנט של LSWS.
פתח ניהול כתובות אתרים http://cloud.connect.link:7080
ברירת מחדל לכניסה/סיסמה: admin/123456
הוסף מארח וירטואלי (Virtual Hosts > Add).
בעת ההוספה תופיע הודעת שגיאה - קובץ התצורה חסר. זה נורמלי, נפתר על ידי לחיצה על לחץ כדי ליצור.
בלשונית כללי, ציין את שורש המסמך (למרות שאין בו צורך, התצורה לא תמריא בלעדיו). שם הדומיין, אם לא צוין, יילקח משם המארח הוירטואלי, שקראנו לו בשם הדומיין שלנו.
עכשיו הגיע הזמן לזכור שיש לנו לא רק שרת אינטרנט, אלא פרוקסי הפוך. ההגדרות הבאות יגידו ל-LSWS מה לעשות proxy והיכן. בהגדרות Virtualhost, פתח את הכרטיסייה External App והוסף יישום חדש מסוג שרת אינטרנט:
ציין את השם והכתובת. אתה יכול לציין שם שרירותי, אבל אתה צריך לזכור אותו, זה יהיה שימושי בשלבים הבאים. הכתובת היא הכתובת שבה Nextcloud גרה ברשת הפנימית:
באותן הגדרות מארח וירטואלי, פתח את לשונית ההקשר וצור הקשר חדש מסוג Proxy:
ציין את הפרמטרים: URI = /, שרת אינטרנט = nextcloud_1 (שם מהשלב הקודם)
הפעל מחדש את LSWS. זה נעשה בלחיצה אחת מממשק האינטרנט, ניסים! (נשא עכבר תורשתי מדבר בי)
שמנו את האישור, הגדר https. הליך קבלת תעודה נשמיט אותו, נסכים שכבר יש לנו אותו ונשכב עם המפתח בספריית /etc/letsencrypt/live/cloud.connect.link.
בואו ניצור "מאזין" (Listeners > Add), בואו נקרא לזה "https". הפנה אותו ליציאה 443 ושימו לב שהיא תהיה מאובטחת:
בכרטיסייה SSL, ציין את הנתיב למפתח ולאישור:
ה"מאזין" נוצר, כעת בקטע מיפוי מארח וירטואלי נוסיף לו את המארח הווירטואלי שלנו:
אם LSWS יבצע פרוקסי רק לשירות אחד, ניתן להשלים את התצורה. אבל אנחנו מתכננים להשתמש בו כדי לשלוח בקשות ל"מקרים" שונים בהתאם לשם הדומיין. ולכל הדומיינים יהיו תעודות משלהם. לכן, עליך לעבור לתצורת virtualhost ושוב לציין את המפתח והאישור שלו בלשונית SSL. בעתיד, זה צריך להיעשות עבור כל מארח וירטואלי חדש.
נותר להגדיר שכתוב כתובות אתרים כך שבקשות http יופנו אל https. (אגב, מתי זה ייגמר? הגיע הזמן שדפדפנים ותוכנות אחרות יעברו ל-https כברירת מחדל, ויעבירו ל-no-SSL ידנית במידת הצורך).
הפעל את הפעל שכתוב וכתוב כללי שכתוב:
עקב אי הבנה מוזרה, אי אפשר ליישם את כללי שכתוב עם ההפעלה מחדש של חיננית הרגילה. לכן, נפעיל מחדש את LSWS לא בחן, אלא בגסות וביעילות:
sudo systemctl הפעל מחדש את lsws.service
כדי לגרום לשרת להאזין ליציאה 80, בואו ניצור מאזין נוסף. בואו נקרא לזה http, נציין את היציאה ה-80 ושהיא תהיה לא מאובטחת:
באנלוגיה להגדרת האזנה https, בואו נצרף אליה את המארח הווירטואלי שלנו.
כעת LSWS יקשיב ביציאה 80 וישלח ממנה בקשות ל-443, תוך כתיבה מחדש של כתובת האתר.
לסיכום, אני ממליץ להוריד את רמת הרישום של LSWS, המוגדרת ל-Debug כברירת מחדל. במצב זה, היומנים מתרבים במהירות הבזק! ברוב המקרים, רמת האזהרה מספיקה. עבור אל תצורת שרת > יומן:
זה משלים את התצורה של OpenLiteSpeed כפרוקסי הפוך. שוב, הפעל מחדש את LSWS, עקוב אחר הקישור https://cloud.connect.link ולראות:
כדי ש-Nextcloud יאפשר לנו להיכנס, עלינו להוסיף את דומיין cloud.connect.link לרשימה המהימנה. בוא נלך לערוך את config.php. התקנתי את Nextcloud באופן אוטומטי בעת התקנת אובונטו והתצורה ממוקמת כאן: /var/snap/nextcloud/current/nextcloud/config.
הוסף את הפרמטר 'cloud.connect.link' למפתח trusted_domains:
בנוסף, באותה תצורה, עליך לציין את כתובת ה-IP של ה-proxy שלנו. אני מפנה את תשומת לבך לעובדה שיש לציין את הכתובת זו שגלויה לשרת Nextcloud, כלומר. ה-IP של ממשק LSWS המקומי. ללא שלב זה, ממשק האינטרנט Nextcloud עובד, אך יישומים אינם מורשים.
'trusted_proxies' =>
מערך (
0 => '172.16.22.100',
),
נהדר, לאחר מכן נוכל להיכנס לממשק ההרשאות:
הבעיה נפתרה! כעת כל לקוח יכול להשתמש בבטחה ב"ענן הקבצים" בכתובת ה-URL האישית שלו, השרת עם הקבצים מופרד מהאינטרנט, לקוחות עתידיים יקבלו הכל אותו דבר ואף כתובת IP נוספת לא תושפע.
בנוסף, אתה יכול להשתמש בפרוקסי הפוך כדי לספק תוכן סטטי, אבל במקרה של Nextcloud, זה לא ייתן עלייה ניכרת במהירות. אז זה אופציונלי ואופציונלי.
אני שמח לחלוק את הסיפור הזה, אני מקווה שהוא יועיל למישהו. אם אתה מכיר שיטות אלגנטיות ויעילות יותר לפתרון הבעיה, אודה להערות!