تخزين Varnish (المعروفة عادةً باسم Varnish) هي مسرِّع عكسي مفتوح المصدر وقوي وسريع لبروتوكول HTTP، يتميز ببنيته الحديثة ولغة تكوين مرنة. كونه بروكسي عكسي يعني ببساطة أنه برنامج يمكنك نشره أمام خادم الويب الخاص بك (الذي يعتبر خادم المصدر أو الخلفية) مثل Nginx، لاستقبال طلبات HTTP من العملاء وإعادة توجيهها إلى خادم المصدر للمعالجة. ويقوم بتقديم الاستجابة من خادم المصدر إلى العملاء.
Varnish يعمل كوسيط بين Nginx و العملاء ولكن مع بعض فوائد الأداء. الغرض الرئيسي منه هو تسريع تحميل تطبيقاتك، من خلال العمل كمحرك للتخزين المؤقت. يستقبل الطلبات من العملاء ويعيد توجيهها إلى الخلفية مرة واحدة لتخزين المحتوى المطلوب (تخزين الملفات وشظايا الملفات في الذاكرة). ثم سيتم تقديم جميع الطلبات المستقبلية للمحتوى مماثل تمامًا من التخزين المؤقت.
هذا يجعل تطبيقات الويب الخاصة بك تحمل بسرعة أكبر ويحسن على نحو غير مباشر أداء خادم الويب الخاص بك لأن Varnish سيقدم المحتوى من الذاكرة بدلاً من Nginx الذي يعالج الملفات من قرص التخزين.
بجانب التخزين المؤقت، Varnish لديها أيضًا حالات استخدام أخرى بما في ذلك توجيه طلبات HTTP وموازن الحمل وجدار الحماية لتطبيقات الويب وأكثر من ذلك.
الـفارنيش مُكوَّن باستخدام لغة تكوين الـفارنيش المدمجة بشكل مرنة للغاية (VCL) التي تمكّنك من كتابة سياسات حول كيفية معالجة الطلبات الواردة. يمكنك استخدامه لبناء حلول مُخصَّصة، وقواعد، ووحدات.
في هذا المقال، سنتناول الخطوات اللازمة لتثبيت خادم الويب إنجينكس وفارنيش كاش 6 على خادم سنت أو إس 8 أو ريد هات إنتربرايز لينكس 8. يجب على مستخدمي ريد هات إنتربرايز لينكس 8 التأكد من تمكين اشتراك ريد هات.
لإعداد مجموعة ليمب كاملة بدلاً من تثبيت خادم الويب إنجينكس وحده، تحقق من الدلائل التالية.
الخطوة 1: تثبيت خادم الويب إنجينكس على سنت أو إس/ريد هات إنتربرايز 8
1. يأتي CentOS/RHEL 8 مع أحدث إصدار من برنامج خادم الويب Nginx، لذا سنقوم بتثبيته من مستودع البرامج الافتراضي باستخدام الأوامر التالية dnf.
# dnf update # dnf install nginx
2. بمجرد تثبيت Nginx، تحتاج إلى بدء التشغيل وتمكينه والتحقق من الحالة باستخدام الأوامر التالية systemctl.
# systemctl start nginx # systemctl enable nginx # systemctl status nginx

3. إذا كنت قلقًا بعض الشيء، يمكنك أيضًا التحقق من مأخذ TCP لـ Nginx، الذي يعمل على المنفذ 80 افتراضيًا، باستخدام الأمر التالي ss.
# ss -tpln

4. إذا كنت تقوم بتشغيل جدار الحماية على النظام، تأكد من تحديث قواعد جدار الحماية للسماح بالطلبات إلى خادم الويب.
# firewall-cmd --zone=public --permanent --add-service=http # firewall-cmd --reload
الخطوة 2: تثبيت Varnish Cache 6 على CentOS/RHEL 8
5. يقدم CentOS/RHEL 8 وحدة Varnish Cache DNF افتراضيًا تحتوي على الإصدار 6.0 LTS (دعم طويل الأمد).
لتثبيت الوحدة، قم بتشغيل الأمر التالي.
# dnf module install varnish

6. بمجرد اكتمال تثبيت الوحدة، يمكنك تأكيد إصدار Varnish المثبت على النظام الخاص بك.
# varnishd -V

7. بعد تثبيت Varnish Cache، يتم تثبيت الأمر التنفيذي الرئيسي تحت /usr/sbin/varnishd وتقع ملفات تكوين varnish في /etc/varnish/.
الملف /etc/varnish/default.vcl هو الملف الرئيسي لتكوين varnish المكتوب باستخدام VCL و/etc/varnish/secret هو ملف سر varnish.
8. بعد ذلك، قم ببدء خدمة Varnish، وتمكينها للبدء التلقائي أثناء تشغيل النظام وتأكد من أنها قيد التشغيل.
# systemctl start varnish # systemctl enable varnish # systemctl status varnish

الخطوة 3: تكوين Nginx للعمل مع Varnish Cache
9. في هذا القسم، سنوضح كيفية تكوين Varnish Cache للعمل أمام Nginx. بشكل افتراضي، يستمع Nginx على المنفذ 80، وعادة ما يتم تكوين كتلة الخادم (أو الخادم الظاهري) للاستماع على هذا المنفذ.
على سبيل المثال، تحقق من كتلة الخادم الافتراضية لـ Nginx المكونة في ملف التكوين الرئيسي (/etc/nginx/nginx.conf).
# vi /etc/nginx/nginx.conf
ابحث عن قسم كتلة الخادم كما هو موضح في لقطة الشاشة التالية.

١٠. لتشغيل Varnish أمام Nginx، يجب عليك تغيير منفذ Nginx الافتراضي من ٨٠ إلى ٨٠٨٠ (أو أي منفذ آخر تختاره).
يجب القيام بذلك في جميع ملفات تكوين كتل الخوادم المستقبلية (التي عادة ما تُنشأ تحت /etc/nginx/conf.d/) للمواقع أو تطبيقات الويب التي ترغب في تقديمها عبر Varnish.
على سبيل المثال، كتلة الخادم لموقع الاختبار الخاص بنا tecmint.lan
هي /etc/nginx/conf.d/tecmint.lan.conf وتحتوي على التكوين التالي.
server { listen 8080; server_name www.tecmint.lan; root /var/www/html/tecmint.lan/; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }

مهم: تذكر أن تعطل كتلة الخادم الافتراضية عن طريق تعليق قسم تكوينها في ملف /etc/nginx/nginx.conf كما هو موضح في لقطة الشاشة التالية. هذا يتيح لك بدء تشغيل مواقع/تطبيقات أخرى على خادمك، وإلا فإن Nginx سيوجه الطلبات دائمًا إلى كتلة الخادم الافتراضية.

١١. بمجرد اكتمال التكوين، تحقق من ملف التكوين لأي أخطاء وأعد تشغيل خدمة Nginx لتطبيق التغييرات الأخيرة.
# nginx -t # systemctl restart nginx

١٢. بعد ذلك، لاستقبال طلبات HTTP من العملاء، نحتاج إلى تكوين Varnish للعمل على منفذ ٨٠. على عكس الإصدارات السابقة من Varnish Cache حيث تمت هذه التغييرات في ملف البيئة Varnish (الذي أصبح مهجورًا الآن)، في الإصدار ٦.٠ وما فوق.
نحتاج إلى إجراء التغيير المطلوب في ملف خدمة Varnish. قم بتشغيل الأمر التالي لفتح ملف الخدمة المناسب للتحرير.
# systemctl edit --full varnish
ابحث عن السطر التالي وقم بتغيير قيمة مفتاح -a
، الذي يحدد عنوان الاستماع والمنفذ. ضع منفذًا بقيمة 80 كما هو موضح في لقطة الشاشة التالية.
يرجى ملاحظة أنه إذا لم تحدد عنوانًا، سيستمع varnishd على جميع الواجهات IPv4 و IPv6 المتاحة على الخادم.
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

احفظ التغييرات في الملف واخرج.
13. بعد ذلك، ستحتاج إلى تعريف خادم الخلفية الذي سيراجعه Varnish لجلب المحتوى منه. يتم ذلك في ملف التكوين الرئيسي لـ Varnish.
# vi /etc/varnish/default.vcl
ابحث عن قسم تكوين الخادم الافتراضي وقم بتغيير السلسلة “default” إلى server1 (أو أي اسم تختاره لتمثيل خادم المصدر الخاص بك). ثم حدد المنفذ على 8080 (أو منفذ الاستماع Nginx الذي قمت بتعريفه في كتلة الخادم الخاصة بك).
backend server1 { .host = "127.0.0.1"; .port = "8080"; }

في هذا الدليل، نقوم بتشغيل Varnish و Nginx على نفس الخادم. إذا كان خادم الويب Nginx الخاص بك يعمل على خادم مختلف. على سبيل المثال، خادم آخر بعنوان 10.42.0.247، ثم قم بتعيين المعلمة .host
كما هو موضح.
backend server1 { .host = "10.42.0.247"; .port = "8080"; }
احفظ الملف وأغلقه.
14. بعد ذلك، ستحتاج إلى إعادة تحميل تكوين مدير systemd بسبب التغييرات الأخيرة في ملف خدمة Varnish، ثم قم بإعادة تشغيل خدمة Varnish لتطبيق التغييرات على النحو التالي.
# systemctl daemon-reload # systemctl restart varnish
15. الآن قم بتأكيد أن Nginx و Varnish يستمعان على المقابس TCP المكونة.
# ss -tpln

الخطوة 4: اختبار إعداد ذاكرة التخزين المؤقت Varnish لـ Nginx
16. بعد ذلك، تأكد من توجيه صفحات الويب عبر Varnish Cache على النحو التالي. افتح متصفح ويب وانتقل باستخدام عنوان IP الخادم أو FDQN كما هو موضح في اللقطة التالية.
http://www.tecmin.lan OR http://10.42.0.144

17. بدلاً من ذلك، استخدم أمر curl كما هو موضح. استخدم عنوان IP الخادم الخاص بك أو FQDN الموقع أو استخدم 127.0.0.1 أو localhost إذا كنت تختبر محليًا.
# curl -I http:///www.tecmint.lan

أدوات إدارة مفيدة لذاكرة التخزين المؤقت Varnish
18. في هذا القسم الأخير، سنصف بإيجاز بعض البرامج المساعدة المفيدة التي يأتي بها Varnish Cache والتي يمكنك استخدامها للتحكم في varnishd، الوصول إلى سجلات الذاكرة وإحصائيات إجمالية وأكثر.
varnishadm
varnishadm هي برنامج مساعد للتحكم في مثيل Varnish المشغول. يقوم بإنشاء اتصال سطر الأوامر بـ varnishd. على سبيل المثال، يمكنك استخدامه لفهرسة الخوادم المرتبطة على النحو الموضح في اللقطة التالية (اقرأ man varnishadm للمزيد من المعلومات).
# varnishadm varnish> backend.list

varnishlog
يوفر البرنامج varnishlog الوصول إلى بيانات محددة بالطلب. يوفر معلومات حول عملاء وطلبات محددة (اقرأ man varnishlog للمزيد من المعلومات).
# varnishlog

varnishstat
A varnishstat also known as varnish statistics, which gives you a glance at Varnish’s current performance by providing access to in-memory statistics such as cache hits and misses, information about the storage, threads created, deleted objects (read man varnishstat for more information).
# varnishstat

varnishtop
A varnishtop utility reads the shared memory logs and presents a continuously updated list of the most commonly occurring log entries (read man varnishtop for more information).
# varnishtop

varnishhist
A varnishhist (varnish history) utility parses the varnish logs and outputs a continuously updated histogram showing the distribution of the last n requests by their processing (read man varnishhist for more information).
# varnishhist

هذا كل شيء! في هذا الدليل، قمنا بعرض كيفية تثبيت Varnish Cache وتشغيله أمام خادم Nginx HTTP لتسريع توصيل محتوى الويب في CentOS/RHEL 8.
يمكن مشاركة أي أفكار أو أسئلة حول هذا الدليل باستخدام النموذج التغذية الراجعة أدناه. لمزيد من المعلومات، اقرأ وثائق Varnish Cache.
العيب الرئيسي لـ Varnish Cache هو عدم دعمه الأصلي لـ HTTPS. لتمكين HTTPS على موقعك الويب/تطبيقك، تحتاج إلى تكوين وكيل إنهاء SSL/TLS للعمل بالتزامن مع Varnish Cache لحماية موقعك. في مقالتنا القادمة، سنوضح كيفية تمكين HTTPS لـ Varnish Cache باستخدام Hitch على CentOS/RHEL 8.
Source:
https://www.tecmint.com/install-varnish-cache-for-nginx-on-centos-rhel-8/