كيف يعمل Varnish Cache + NGINX Reverse Proxy

نشرت: 2022-08-09

في هذه المقالة سوف نناقش Varnish cache NGINX reverse proxy وكيف يمكنك إعداده.

الخادم الوكيل مع التركيز على التخزين المؤقت لـ HTTP هو Varnish. تم تصميمه ليكون مسرع HTTP وقد يعمل كوكيل عكسي لخادم الويب Apache أو NGINX. قامت مواقع الويب التي تتمتع بحركة مرور كبيرة وشهرة عالية بتطبيق Varnish.

جدول المحتويات

ما هو الورنيش الكاش؟

بالنسبة لشركة قائمة على الويب ، غالبًا ما تكون ذاكرة التخزين المؤقت هي الجزء الأكثر أهمية في البرنامج. Varnish Cache هو محرك HTTP قوي ومفتوح المصدر / وكيل HTTP عكسي يقوم بالضبط بما يوحي به اسمه: يخزن (أو يخزن) نسخة من صفحة ويب في المرة الأولى التي يراها الزائر. قد يؤدي ذلك إلى تسريع موقع الويب بنسبة تصل إلى 1000 بالمائة. يقدم Varnish طلبًا واحدًا إلى الخادم الخاص بك لتخزين الصفحة مؤقتًا ، وبعد ذلك يتعامل مع أي طلبات لاحقة لنفس الصفحة. ينتج عن هذا تسليم سريع للمحتوى بشكل لا يصدق ويقل الطلب على موارد الخادم الخلفية.

  • الكفاءات الأساسية لـ Varnish هي السرعة والأداء.
  • توفير البنية التحتية للخادم
  • قابلية التوسع - الورنيش يمكّن موقعك من تلبية الطلب بغض النظر عن حجم الزوار أو الطلبات.
  • الحماية من الانقطاع: يستمر تطبيق Varnish في تقديم المعلومات المخزنة مؤقتًا حتى في حالة تعطل الخادم الخاص بك.
  • المرونة: تسمح لغة تكوين الورنيش (VCL) بإنشاء حلول وقواعد ووحدات متخصصة.
  • تجربة مستخدم محسنة

كيف يعمل Varnish Cache؟

قبل أن يصلوا إلى الواجهة الخلفية لخادم الويب الخاص بك ، يعالج Varnish جميع الطلبات الواردة. تتعامل ذاكرة التخزين المؤقت الخاصة به مع كل حركة مرور الويب ويتم تحديثها افتراضيًا كل دقيقتين.

الورنيش Cache Nginx عكس الوكيل

سيقوم Varnish بتوجيه الطلب إلى الواجهة الخلفية لخادم الويب وتخزين النتيجة مؤقتًا ، كما رأينا للتو في فقرة الوكيل العكسي العامة إذا لم يتم تخزين الطلب مؤقتًا.

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

يمكنك الرد على كل طلب بشكل مختلف باستخدام هذه اللغة وأشكالها المختلفة. على سبيل المثال ، يمكنك توجيه طلبات معينة إلى خلفية محددة أو توجيه تعليمات لـ Varnish لاتخاذ إجراء مختلف بناءً على خصائص الطلب الوارد أو نتائجه.

قد يستمر توفير المواد المخزنة مؤقتًا حتى في حالة عدم توفر خادم الويب بسبب ميزة مضمنة تسمى الاستقصاء الخلفي ، وهي وظيفة أخرى مذهلة من وظائف الورنيش. سيستمر الورنيش في توفير المحتوى المخزن مؤقتًا لإطار زمني يُعرف باسم وقت السماح إذا اكتشف فترة تعطل. يقوم الاستقصاء الخلفي بالاستعلام عن الخادم بتردد يمكنك تعيينه بشكل مرن.

ما هو Nginx؟

NGINX هو برنامج مفتوح المصدر يمكن استخدامه لدفق الفيديو والتخزين المؤقت والوكلاء العكسيين وخدمة الويب والوظائف الأخرى. بدأ في الأصل كخادم ويب تم تصميمه لأقصى سرعة واعتمادية. قد يعمل NGINX كخادم HTTP وخادم وكيل للبريد الإلكتروني (IMAP و POP3 و SMTP) وبروكسي عكسي وموازن تحميل لخوادم HTTP و TCP و UDP بالإضافة إلى العمل كخادم HTTP.

ما هو عكس الوكيل؟

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

تحتوي كل عملية وكيل عكسي على ثلاث مراحل رئيسية:

  1. جمع طلب الاتصال: على حافة الشبكة ، يقبل الوكيل العكسي الطلبات الواردة.
  2. مصافحة TCP ثلاثية الاتجاهات: يتم إنشاء اتصال بالبروكسي العكسي بعد مصافحة TCP ثلاثية الاتجاهات ، ويتم إغلاق الاتصال الأول.
  3. اتصال خادم الأصل: باستخدام عنوان IP وهمي ، يقوم الوكيل العكسي بتوصيل الخادم الأصلي بطلب العميل.

لا يمكن للمستخدمين أبدًا الاتصال مباشرة بخادم الأصل نظرًا لأن جميع اتصالات متصفح الويب بتطبيقات الويب تتم دائمًا من خلال وكيل عكسي.

كيف يمكنك إعداد Varnish cache Nginx reverse proxy؟

قم بتثبيت Nginx على الخادم الخاص بك

بادئ ذي بدء ، نحتاج إلى تثبيت Nginx من مستودع Ubuntu باستخدام الأمر apt

 sudo apt update apt install nginx -y

بعد اكتمال التثبيت ، نحتاج إلى بدء تشغيل Nginx وتمكينه في كل مرة عند تمهيد النظام باستخدام الأمر systemctl

 systemctl start nginx systemctl enable nginx

قم بتكوين Nginx على المنفذ 88

سنقوم بإعداد Nginx لاستخدام منفذ HTTP غير التقليدي 8080 للتشغيل. للقيام بذلك ، يجب علينا تعديل ملفات المضيف الظاهري الموجودة في دليل "المواقع المتاحة".

 nano /etc/nginx/sites-available/default

غيّر قيمة سطر "الاستماع" إلى 8080. احفظ واخرج.

تحقق من وجود أخطاء عن طريق اختبار إعدادات Nginx الآن. أعد تشغيل الخدمة بعد ذلك.

 nginx -t systemctl restart nginx

تحقق من Nginx مرة أخرى باستخدام netstat ، وتأكد من أنه يعمل على منفذ HTTP غير التقليدي 8080.

 netstat -plntu

تم تثبيته ويستخدم المنفذ 8080 حاليًا بواسطة خادم الويب Nginx.

قم بتثبيت الورنيش على أوبونتو

علينا تثبيت الورنيش باستخدام الأمر apt

 sudo apt install varnish -y

باستخدام أوامر systemctl المدرجة أدناه ، ابدأ بالورنيش واضبطه ليبدأ تلقائيًا عند بدء تشغيل النظام.

 systemctl start varnish systemctl enable varnish

بشكل افتراضي ، سيستخدم الورنيش المنفذ 6082 لواجهة ويب المسؤول والمنفذ 6081 للوصول العام. تأكد من إدراج منافذ معينة باستخدام الأمر netstat للتحقق.

 netstat -plntu

تم تركيب مسرع HTTP الورنيش

قم بتكوين الورنيش كوكيل عكسي لـ Nginx

سيتم استخدام Varnish كوكيل عكسي لخادم الويب Nginx. سيعمل خادم الويب Nginx على منفذ HTTP 8080 ، بينما سيعمل Varnish على منفذ HTTP 80.

في هذه المرحلة ، سنقوم بإعداد Varnish لـ Nginx ، وتحديد خادم الواجهة الخلفية ، وتعديل Varnish بحيث تستخدم منفذ HTTP 80 كمنفذ افتراضي لها.

قم بتحرير ملف "default.vcl" بالانتقال إلى دليل تكوين الورنيش على الفور. وتأكد من أن المضيف 127.0.0.1 والمنفذ 8080

 nano /etc/varnish/default.vcl

تم الانتهاء من تكوين الواجهة الخلفية.

الخطوة التالية هي إعداد Varnish لاستخدام منفذ HTTP 80. قم بتحرير ملف تكوين الورنيش بالانتقال إلى دليل "الورنيش" في الدليل "/ etc / default".

 nano /etc/default/varnish

تأكد من أن المنفذ الافتراضي الخاص بك هو 6081 ومنفذ HTTP هو 80

يجب الآن تحرير ملف خدمة الورنيش في الدليل '/ lib / systemd / system'. قم بتحرير ملف varnish.service بالانتقال إلى دليل نظام systemd.

 cd /lib/systemd/system nano varnish.service

استبدل منفذ HTTP 80 بمنفذ الورنيش 6081 على سطر "ExecStart".

الآن أعد تحميل تكوين systemd وأعد تشغيل الورنيش

 systemctl daemon-reload systemctl restart varnish

افحص الورنيش باستخدام الأمر netstat

 netstat -plntu

اكتمل تكوين الورنيش كوكيل عكسي لـ Nginx

تكوين جدار حماية UFW

يسمى جدار الحماية الافتراضي الذي يمكن قراءته من قبل الإنسان على نظام التشغيل Ubuntu "UFW". استخدم الأمر apt الموضح أدناه لتثبيتها إذا لم يكن لديك الحزمة بالفعل.

 sudo apt install ufw

سنقوم بتشغيل جدار الحماية وفتح منافذ SSH و HTTP و HTTPS جديدة.

أوامر ufw المدرجة أدناه.

 ufw allow ssh ufw allow http ufw allow https

قم الآن بتشغيل جدار الحماية وجعله يبدأ دائمًا في وقت التمهيد.

 ufw enable

الآن وقد أصبح جدار حماية UFW نشطًا ، يمكن الوصول إلى منفذي HTTP و HTTPS من الشبكة الخارجية.