Nextcloud בתוך ומחוץ OpenLiteSpeed: הגדרת פרוקסי הפוך

כיצד אוכל להגדיר את OpenLiteSpeed ​​​​להפוך פרוקסי ל-Nextcloud ברשת הפנימית?

באופן מפתיע, חיפוש ב-Habré עבור OpenLiteSpeed ​​​​לא נותן כלום! אני ממהר לתקן את העוול הזה, כי LSWS הוא שרת אינטרנט הגון. אני אוהב את זה בגלל המהירות שלו וממשק ניהול האינטרנט המפואר שלו:

Nextcloud בתוך ומחוץ OpenLiteSpeed: הגדרת פרוקסי הפוך

למרות ש-OpenLiteSpeed ​​​​מפורסם ביותר כ"מאיץ" של וורדפרס, במאמר של היום אראה שימוש ספציפי למדי בו. כלומר פרוקסי הפוך של בקשות (פרוקסי הפוך). אתה אומר שזה יותר נפוץ להשתמש ב-nginx בשביל זה? אני אסכים. אבל זה כל כך כואב שהתאהבנו ב-LSWS!

פרוקסי זה בסדר, אבל איפה? בשירות לא פחות נפלא - Nextcloud. אנו משתמשים ב-Nextcloud כדי ליצור "ענני שיתוף קבצים" פרטיים. לכל לקוח, אנו מקצים VM נפרד עם Nextcloud, ואנחנו לא רוצים לחשוף אותם "בחוץ". במקום זאת, אנו מבקשים פרוקסי דרך פרוקסי הפוך משותף. פתרון זה מאפשר:
1) הסר את השרת שבו מאוחסנים נתוני הלקוח מהאינטרנט ו
2) שמור כתובות IP.

התוכנית נראית כך:

Nextcloud בתוך ומחוץ OpenLiteSpeed: הגדרת פרוקסי הפוך

ברור שהתכנית מפושטת, כי ארגון תשתית שירותי האינטרנט אינו הנושא של המאמר של היום.

גם במאמר זה אשמיט את ההתקנה ואת התצורה הבסיסית של ה-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

משימה:
קבל מהאינטרנט דרך הקישור 'https://cloud.connect.link' (SSL) ל-Nextcloud ברשת הפנימית.

  • התקנת OpenLiteSpeed ​​​​באובנטו 18.04.2.

בואו נוסיף מאגר:

wget -O http://rpms.litespeedtech.com/debian/enable_lst_debain_repo.sh |sudo bash
עדכון sudo apt-get

התקן, הרץ:

sudo apt-get להתקין openlitespeed
התחל sudo /usr/local/lsws/bin/lswsctrl

  • הגדרת חומת אש מינימלית.

    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

Nextcloud בתוך ומחוץ OpenLiteSpeed: הגדרת פרוקסי הפוך

הוסף מארח וירטואלי (Virtual Hosts > Add).
בעת ההוספה תופיע הודעת שגיאה - קובץ התצורה חסר. זה נורמלי, נפתר על ידי לחיצה על לחץ כדי ליצור.

Nextcloud בתוך ומחוץ OpenLiteSpeed: הגדרת פרוקסי הפוך

בלשונית כללי, ציין את שורש המסמך (למרות שאין בו צורך, התצורה לא תמריא בלעדיו). שם הדומיין, אם לא צוין, יילקח משם המארח הוירטואלי, שקראנו לו בשם הדומיין שלנו.

Nextcloud בתוך ומחוץ OpenLiteSpeed: הגדרת פרוקסי הפוך

עכשיו הגיע הזמן לזכור שיש לנו לא רק שרת אינטרנט, אלא פרוקסי הפוך. ההגדרות הבאות יגידו ל-LSWS מה לעשות proxy והיכן. בהגדרות Virtualhost, פתח את הכרטיסייה External App והוסף יישום חדש מסוג שרת אינטרנט:

Nextcloud בתוך ומחוץ OpenLiteSpeed: הגדרת פרוקסי הפוך

ציין את השם והכתובת. אתה יכול לציין שם שרירותי, אבל אתה צריך לזכור אותו, זה יהיה שימושי בשלבים הבאים. הכתובת היא הכתובת שבה Nextcloud גרה ברשת הפנימית:

Nextcloud בתוך ומחוץ OpenLiteSpeed: הגדרת פרוקסי הפוך

באותן הגדרות מארח וירטואלי, פתח את לשונית ההקשר וצור הקשר חדש מסוג Proxy:

Nextcloud בתוך ומחוץ OpenLiteSpeed: הגדרת פרוקסי הפוך

ציין את הפרמטרים: URI = /, שרת אינטרנט = nextcloud_1 (שם מהשלב הקודם)

Nextcloud בתוך ומחוץ OpenLiteSpeed: הגדרת פרוקסי הפוך

הפעל מחדש את LSWS. זה נעשה בלחיצה אחת מממשק האינטרנט, ניסים! (נשא עכבר תורשתי מדבר בי)

Nextcloud בתוך ומחוץ OpenLiteSpeed: הגדרת פרוקסי הפוך
Nextcloud בתוך ומחוץ OpenLiteSpeed: הגדרת פרוקסי הפוך

  • שמנו את האישור, הגדר https.
    הליך קבלת תעודה נשמיט אותו, נסכים שכבר יש לנו אותו ונשכב עם המפתח בספריית /etc/letsencrypt/live/cloud.connect.link.

בואו ניצור "מאזין" (Listeners > Add), בואו נקרא לזה "https". הפנה אותו ליציאה 443 ושימו לב שהיא תהיה מאובטחת:

Nextcloud בתוך ומחוץ OpenLiteSpeed: הגדרת פרוקסי הפוך

בכרטיסייה SSL, ציין את הנתיב למפתח ולאישור:

Nextcloud בתוך ומחוץ OpenLiteSpeed: הגדרת פרוקסי הפוך

ה"מאזין" נוצר, כעת בקטע מיפוי מארח וירטואלי נוסיף לו את המארח הווירטואלי שלנו:

Nextcloud בתוך ומחוץ OpenLiteSpeed: הגדרת פרוקסי הפוך

אם LSWS יבצע פרוקסי רק לשירות אחד, ניתן להשלים את התצורה. אבל אנחנו מתכננים להשתמש בו כדי לשלוח בקשות ל"מקרים" שונים בהתאם לשם הדומיין. ולכל הדומיינים יהיו תעודות משלהם. לכן, עליך לעבור לתצורת virtualhost ושוב לציין את המפתח והאישור שלו בלשונית SSL. בעתיד, זה צריך להיעשות עבור כל מארח וירטואלי חדש.

Nextcloud בתוך ומחוץ OpenLiteSpeed: הגדרת פרוקסי הפוך

נותר להגדיר שכתוב כתובות אתרים כך שבקשות http יופנו אל https.
(אגב, מתי זה ייגמר? הגיע הזמן שדפדפנים ותוכנות אחרות יעברו ל-https כברירת מחדל, ויעבירו ל-no-SSL ידנית במידת הצורך).
הפעל את הפעל שכתוב וכתוב כללי שכתוב:

RewriteCond %{SERVER_PORT} 80
RewriteRule ^ (. *) $ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Nextcloud בתוך ומחוץ OpenLiteSpeed: הגדרת פרוקסי הפוך

עקב אי הבנה מוזרה, אי אפשר ליישם את כללי שכתוב עם ההפעלה מחדש של חיננית הרגילה. לכן, נפעיל מחדש את LSWS לא בחן, אלא בגסות וביעילות:

sudo systemctl הפעל מחדש את lsws.service

כדי לגרום לשרת להאזין ליציאה 80, בואו ניצור מאזין נוסף. בואו נקרא לזה http, נציין את היציאה ה-80 ושהיא תהיה לא מאובטחת:

Nextcloud בתוך ומחוץ OpenLiteSpeed: הגדרת פרוקסי הפוך

באנלוגיה להגדרת האזנה https, בואו נצרף אליה את המארח הווירטואלי שלנו.

כעת LSWS יקשיב ביציאה 80 וישלח ממנה בקשות ל-443, תוך כתיבה מחדש של כתובת האתר.
לסיכום, אני ממליץ להוריד את רמת הרישום של LSWS, המוגדרת ל-Debug כברירת מחדל. במצב זה, היומנים מתרבים במהירות הבזק! ברוב המקרים, רמת האזהרה מספיקה. עבור אל תצורת שרת > יומן:

Nextcloud בתוך ומחוץ OpenLiteSpeed: הגדרת פרוקסי הפוך

זה משלים את התצורה של OpenLiteSpeed ​​​​כפרוקסי הפוך. שוב, הפעל מחדש את LSWS, עקוב אחר הקישור https://cloud.connect.link ולראות:

Nextcloud בתוך ומחוץ OpenLiteSpeed: הגדרת פרוקסי הפוך

כדי ש-Nextcloud יאפשר לנו להיכנס, עלינו להוסיף את דומיין cloud.connect.link לרשימה המהימנה. בוא נלך לערוך את config.php. התקנתי את Nextcloud באופן אוטומטי בעת התקנת אובונטו והתצורה ממוקמת כאן: /var/snap/nextcloud/current/nextcloud/config.
הוסף את הפרמטר 'cloud.connect.link' למפתח trusted_domains:

'trusted_domains' =>
מערך (
0 => '172.16.22.110',
1 => 'cloud.connect.link',
),

Nextcloud בתוך ומחוץ OpenLiteSpeed: הגדרת פרוקסי הפוך

בנוסף, באותה תצורה, עליך לציין את כתובת ה-IP של ה-proxy שלנו. אני מפנה את תשומת לבך לעובדה שיש לציין את הכתובת זו שגלויה לשרת Nextcloud, כלומר. ה-IP של ממשק LSWS המקומי. ללא שלב זה, ממשק האינטרנט Nextcloud עובד, אך יישומים אינם מורשים.

'trusted_proxies' =>
מערך (
0 => '172.16.22.100',
),

נהדר, לאחר מכן נוכל להיכנס לממשק ההרשאות:

Nextcloud בתוך ומחוץ OpenLiteSpeed: הגדרת פרוקסי הפוך

הבעיה נפתרה! כעת כל לקוח יכול להשתמש בבטחה ב"ענן הקבצים" בכתובת ה-URL האישית שלו, השרת עם הקבצים מופרד מהאינטרנט, לקוחות עתידיים יקבלו הכל אותו דבר ואף כתובת IP נוספת לא תושפע.
בנוסף, אתה יכול להשתמש בפרוקסי הפוך כדי לספק תוכן סטטי, אבל במקרה של Nextcloud, זה לא ייתן עלייה ניכרת במהירות. אז זה אופציונלי ואופציונלי.

אני שמח לחלוק את הסיפור הזה, אני מקווה שהוא יועיל למישהו. אם אתה מכיר שיטות אלגנטיות ויעילות יותר לפתרון הבעיה, אודה להערות!

מקור: www.habr.com

הוספת תגובה