كيفية تكوين OpenLiteSpeed لعكس الوكيل في Nextcloud ، الموجود على الشبكة الداخلية؟
والمثير للدهشة أن البحث عن Habré لـ OpenLiteSpeed لا يسفر عن شيء! أسارع إلى تصحيح هذا الظلم ، لأن LSWS هو خادم ويب يستحق. أنا أحبه للسرعة واجهة إدارة الويب العصرية:

على الرغم من أن OpenLiteSpeed هو الأكثر شهرة كـ "مسرّع" من WordPress ، إلا أنني سأعرض في مقال اليوم تطبيقه المحدد. وهي عكس طلبات الوكيل (الوكيل العكسي). أنت تقول أنه من الشائع استخدام nginx لهذا؟ سوف اوافق لكنه يؤلمنا حقا أن نحب LSWS!
حسنا ، ولكن أين؟ خدمة رائعة على قدم المساواة هي Nextcloud. نستخدم Nextcloud لإنشاء "سحب مشاركة الملفات" الخاصة. لكل عميل ، نقوم بتخصيص VM منفصل مع Nextcloud ، ولا نريد الكشف عنها "خارج". بدلاً من ذلك ، نطالب بالوكالة من خلال وكيل عكسي شائع. يتيح لك هذا الحل:
- إزالة الخادم الذي يتم تخزين بيانات العميل من الإنترنت و
- حفظ عناوين بروتوكول الإنترنت.
المخطط يشبه هذا:

فمن الواضح أن المخطط مبسط ، لأن تنظيم البنية التحتية لخدمات الويب ليس موضوع مقال اليوم.
وفي هذه المقالة أيضًا ، سأحذف التثبيت والتكوين الأساسي لغير clauda ، خاصة وأن هناك مواد حول هذا الموضوع على Habré. لكنني سأظهر بالتأكيد الإعدادات ، والتي بدونها لن يعمل Nextcloud من أجل الوكيل.
المقدمة: Nextcloud مثبت على المضيف 1 وتم تهيئته للعمل عبر http (بدون SSL) ، ويحتوي فقط على واجهة شبكة محلية وعنوان IP "رمادي" 172.16.22.110.
سنقوم بتكوين OpenLiteSpeed على المضيف 2. يحتوي على واجهتين ، واحدة خارجية (تبدو على الإنترنت) وواجهة داخلية بعنوان IP على الشبكة 172.16.22.0/24
يؤدي اسم DNS cloud.connect.link إلى عنوان IP الخاص بالواجهة الخارجية للمضيف 2
المهمة: للوصول من الإنترنت عبر الرابط " 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 الحصول على التحديث
تعيين ، تشغيل:
sudo - الحصول على تثبيت openlitespeed
sudo / usr / local / lsws / bin / lswsctrl start
- تقليل جدار الحماية.
sudo ufw تسمح سه
sudo ufw الافتراضي تسمح المنتهية ولايته
sudo ufw الافتراضي رفض الواردة
sudo ufw تسمح http
sudo ufw تسمح https
sudo ufw تسمح من مضيف الإدارة الخاص بك إلى أي منفذ 7080
sudo ufw تمكين
- قم بإعداد OpenLiteSpeed كوكيل عكسي.
إنشاء الدلائل ل virtualhost.
cd / usr / local / lsws /
sudo mkdirc cloud.connect.link
سحابة cd.connect.link/
sudo mkdir {conf، html، logs}
sudo chown lsadm: lsadm ./conf/
تكوين virtualhost من واجهة الويب LSWS.
افتح عنوان url management http://cloud.connect.link:7080
تسجيل الدخول / كلمة المرور الافتراضية: admin / 123456

أضف مضيفًا افتراضيًا (مضيفات افتراضية> إضافة).
عند الإضافة ، ستظهر رسالة خطأ - لا يوجد ملف تكوين. هذا أمر طبيعي ، ويتم حلها بالنقر فوق "انقر" لإنشاء.

في علامة التبويب "عام" ، حدد "جذر المستند" (على الرغم من عدم الحاجة إليه ، لن يتم إيقاف التكوين دون ذلك). إن اسم النطاق ، إن لم يكن محددًا ، سيؤخذ من اسم المضيف الظاهري ، الذي أطلقنا عليه اسم مجالنا.

الآن حان الوقت لنتذكر أنه ليس لدينا خادم ويب فحسب ، بل وكيل عكسي. سوف تخبر الإعدادات التالية LSWS بما يجب على الوكيل ومكانه. في إعدادات المضيف الظاهري ، افتح علامة التبويب تطبيق خارجي وأضف تطبيقًا جديدًا مثل خادم الويب:

اذكر الاسم والعنوان يمكن تحديد الاسم بشكل تعسفي ، ولكن يجب تذكره ، وهو مفيد في الخطوات التالية. العنوان هو المكان الذي يعيش فيه Nextcloud على الشبكة الداخلية:

في نفس إعدادات المضيف الظاهري ، افتح علامة التبويب "سياق" وقم بإنشاء سياق جديد من نوع الوكيل:

حدد المعلمات: URI = / ، خادم الويب = nextcloud_1 (اسم من الخطوة السابقة)

أعد تشغيل LSWS. ويتم ذلك بنقرة واحدة من واجهة الويب ، والمعجزات! (يتحدث حامل الماوس الوراثي عني)


- نضع الشهادة ، تكوين HTTPS.
نحن نحذف إجراء الحصول على شهادة ، ونوافق على أن لدينا بالفعل ونكذب على المفتاح في دليل /etc/letsencrypt/live/cloud.connect.link.
قم بإنشاء "مستمع" (مستمعين> إضافة) ، واسمه "https". نوجهها إلى المنفذ 443 ونلاحظ أنها ستكون آمنة:

في علامة تبويب SSL ، حدد المسار إلى المفتاح والشهادة:

تم إنشاء "مستمع" ، والآن في قسم تعيينات المضيف الظاهري ، نضيف مضيفنا الظاهري إليه:

إذا كان LSWS يتعامل مع خدمة واحدة فقط ، فيمكن إكمال التكوين. لكننا نخطط لاستخدامها لنقل الطلبات إلى "سلطات" مختلفة حسب اسم المجال. وجميع المجالات لديها شهادات خاصة بهم. لذلك ، تحتاج إلى الانتقال إلى virtualhost config وتحديد مرة أخرى المفتاح والشهادة في علامة التبويب SSL. في المستقبل ، يجب أن يتم ذلك لكل مضيف افتراضي جديد.

يبقى تكوين إعادة كتابة عنوان url بحيث يتم توجيه طلبات http إلى https.
(بالمناسبة ، متى ستنتهي هذه؟ حان الوقت للمتصفحات والبرامج الأخرى للذهاب إلى https بشكل افتراضي ، وعدم إعادة توجيه SSL يدويًا إذا لزم الأمر).
تمكين تمكين إعادة الكتابة وكتابة قواعد إعادة الكتابة:
RewriteCond٪ {SERVER_PORT} 80
RewriteRule ^ (. *) $ Https: //٪ {SERVER_NAME}٪ {REQUEST_URI } [R = 301، L]

من المستحيل تطبيق قواعد إعادة الكتابة مع إعادة التشغيل الرشيقة المعتادة بسبب سوء فهم غريب. لذلك ، إعادة تشغيل LSWS ليست أنيقة ، ولكنها غير مهذبة وفعالة:
sudo systemctl إعادة تشغيل lsws.service
بحيث يستمع الخادم إلى المنفذ الثمانين ، أنشئ مستمعًا آخر. دعنا نسميها http ، حدد المنفذ 80 وأنه سيكون غير آمن:

قياسًا على إعداد مستمع https ، دعنا نرفق مضيفنا الظاهري به.
الآن ستستمع LSWS إلى المنفذ الثمانين وترسل الطلبات منه إلى 443 ، وتعيد كتابة عنوان url.
في الختام ، أوصي بخفض مستوى تسجيل LSWS ، والذي تم تعيينه كـ Debug افتراضيًا. في هذا الوضع ، تتكاثر السجلات بسرعة البرق! بالنسبة لمعظم الحالات ، يكون مستوى التحذير كافياً. انتقل إلى تكوين الخادم> السجل:

هذا يكمل تكوين OpenLiteSpeed كوكيل عكسي. مرة أخرى ، نعيد تشغيل LSWS ، اتبع الرابط https://cloud.connect.link وانظر:

لكي يسمح لنا Nextcloud بالدخول ، يلزمك إضافة مجال cloud.connect.link إلى قائمة المجالات الموثوق بها. اذهب تحرير config.php. لقد قمت بتثبيت Nextcloud تلقائيًا عند تثبيت Ubuntu والتكوين هنا: / var / snap / nextcloud / الحالي / nextcloud / config.
إلى مفتاح Trusted_domains ، أضف المعلمة "cloud.connect.link":
'Trusted_domains' =>
مجموعة (
0 => '172.16.22.110' ،
1 => 'cloud.connect.link' ،
)

علاوة على ذلك ، في نفس التهيئة ، يجب عليك تحديد عنوان IP الخاص بالوكيل الخاص بنا. أود لفت الانتباه إلى حقيقة أن العنوان يجب أن يكون مرئيًا لخادم Nextcloud ، أي واجهة IP المحلية LSWS. بدون هذه الخطوة ، تعمل واجهة الويب Nextcloud ، لكن التطبيقات غير معتمدة.
'Trusted_proxies' =>
مجموعة (
0 => '172.16.22.100' ،
)
حسنًا ، بعد ذلك يمكننا الدخول إلى واجهة التفويض:

تم حل المشكلة! الآن يمكن لكل عميل استخدام "سحابة الملفات" بأمان في عنوان url الشخصي الخاص به ، ويتم فصل الخادم الذي يحتوي على الملفات عن الإنترنت ، وسيحصل العملاء في المستقبل على نفس الشيء ولن يتأثر أي عنوان IP إضافي.
بالإضافة إلى ذلك ، يمكنك استخدام الخادم الوكيل العكسي لتقديم محتوى ثابت ، ولكن في حالة Nextcloud ، لن يمنح ذلك زيادة ملحوظة في السرعة. لذلك هذا هو اختياري واختياري.
سعيد لتبادل هذه القصة ، وآمل أن يكون هناك شخص مفيد. إذا كنت تعرف أساليب أكثر أناقة وفعالية لحل المهمة - سأكون ممتنًا للتعليقات!