איך להתקין את Varnish Cache 6 עבור Nginx על CentOS/RHEL 8

מטמון Varnish (בדרך כלל מתפרש כ-Varnish) הוא פרוקסי הפוך עוצמתי, מהיר ופתוח מקורות, עם ארכיטקטורה מודרנית ושפת תצורה גמישה. להיות פרוקסי הפוך פשוט אומר שזהו תוכנה שניתן להטמיע לפני שרת האינטרנט שלך (שהוא השרת מקור או גב), כגון Nginx, כדי לקבל את בקשות ה-HTTP של לקוחות ולהעבירם לשרת המקור לעיבוד. והוא מספק את התגובה מהשרת המקור ללקוחות.

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

זה גורם ליישומי האינטרנט שלך לטעון מהר יותר ובצורה עקיפה משפר את ביצועי השרת שלך בצורה כללית מאחר ש-Varnish ישרת תוכן מהזיכרון במקום ש- Nginx יעבד קבצים מכונן אחסון.

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

הַvarnish מֻגָּדֵר בְּאֶמְצָעוּת שָׂפַת הַתְּצוּרָה הַמֻּרְחֶבֶת בְּתוֹך הַVarnish Configuration Language (VCL) הַמַּובְנָה שֶׁמַּאֲפִשִׁית לְךָ לִכְתוֹב מַדְרָכוֹת עַל אֵיךָ יֵשׁ לַטְפִּיל בַּבְּקָשׁוֹת הַנִּכְנָסוֹת. אֶתָּה יָכוֹל לִהִשְׁתַמֵשׁ בּוֹ כְּדֵי לִבְנוֹת פְּתָרוֹנוֹת מְיוּחָדוֹת, כַּלָּלִים, וּמוֹדוּלִים.

בַּמַּאֲמָר הַזֶּה, נֵלֵךְ דֶרֶךְ הַשְּׁלִיחָה לִהְתִיק אֶת שְׁרֵת הָאֲינְטֶרְנֶט Nginx וְאֶת Varnish Cache 6 עַל שְׁרֵת CentOS 8 או RHEL 8 חָדָשׁ. מְשְׁתַמְּשִׁים שֶׁל RHEL 8 צָרִיכִים לְוַדֵא שֶׁהֵם מַפְעִילִים מִנוּי redhat.

כְּדֵי לַקֵּם, עֲרֵךְ LEMP מַחְסָן בְּמָקוֹם לְהַתְקִין אֶת שְׁרֵת הָאֲינְטֶרְנֶט Nginx לְבַד, רְאֵה אֶת הַמַּדְרָכוֹת הַבָּאוֹת.

  1. אֵיך לְהַתְקִין שְׁרֵת LEMP עַל CentOS 8
  2. אֵיך לְהַתְקִין שְׁרֵת LEMP עַל RHEL 8

שְׁלִיחָה 1: לְהַתְקִין אֶת שְׁרֵת הָאֲינְטֶרְנֶט Nginx עַל CentOS/RHEL 8

1. הַ-CentOS/RHEL 8 מַגִיעַ עִם גִרסָה הָאַחֲרוֹנָה שֶׁל תוֹכֶנַת שֵׁר הָאֲינְטֶרְנֶט Nginx, לְכָן נִתְקַין אוֹתָה מִהַמַחֲסָן הָבְּרִירוּת בְּאִמְצָעוֹת פְּקֻדוֹת dnf הַבָּאוֹת.

# dnf update
# dnf install nginx

2. לְאַחַר הַתִּקְנַת הַ-Nginx, עַלֶיךָ לְהַתְחִיל, לְאַפְשִׁיר וּלְוַדֹּא שֶׁהַמַּעֲרָכָה פּוֹעָלֶת בְּאִמְצָעוֹת פְּקֻדוֹת systemctl הַבָּאוֹת.

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx
Verify Nginx Service Status

3. אִם אַתָּה קָצִת סָקֵר, אַתָּה יָכוֹל גַּם לְבָדוֹק אֶת תַּקְשִׁיט הַ-TCP שֶׁל הַ-Nginx, שֶׁפּוֹעֵל עַל פּוֹרְט 80 כְּבְּרִירוּתָה, בְּאִמְצָעוֹת פְּקֻדַת ss הַבָּאָה.

# ss -tpln
Check Nginx TCP Port

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
Install Varnish Cache in CentOS 8

6. לאחר שההתקנה של המודול הושלמה, ניתן לאשר את גרסת Varnish שהותקנה על המערכת שלך.

# varnishd -V
Check Varnish Version

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
Verify Varnish Cache on CentOS 8

שלב 3: הגדרת Nginx כך שיעבוד עם Varnish Cache

9. בסעיף זה, נדגים כיצד להגדיר את Varnish Cache כך שירוץ מול Nginx. כברירת מחדל, Nginx מאזין בפורט 80, כל בלוק שרת (או מארח וירטואלי) מוגדר להאזין בפורט זה.

לדוגמה, ראה את בלוק השרת המוגדר כברירת מחדל של Nginx בקובץ התצורה הראשי (/etc/nginx/nginx.conf).

# vi /etc/nginx/nginx.conf

חפש את קטע בלוק השרת כפי שמוצג בתמונת המסך הבאה.

Nginx Server Block Configuration

10. כדי להפעיל את Varnish לפני Nginx, עליך לשנות את פתח המחשב של Nginx מ-80 ל-8080 (או כל פתח אחר שתבחר).

זה צריך להתבצע בכל קבצי התצורה של בלוקי השרתים בעתיד (נוצרים בדרך כלל תחת /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 {
        }
}
Nginx Server Block Configuration

חשוב: זכור לנטרל את בלוק השרת הברירתי על ידי הערת ההגדרות שלו בקובץ ה-/etc/nginx/nginx.conf כפי שמוצג בלפסקה הבאה. זה מאפשר לך להתחיל להריץ אתרים/אפליקציות אחרות בשרת שלך, אחרת Nginx תפנה בקשות תמיד לבלוק השרת הברירתי.

Disable Nginx Server Block

11. לאחר שהתקנת את ההגדרות, בדוק את קובץ ההגדרות לאיזורים והפעל מחדש את שירות ה-Nginx כדי להחיל את השינויים האחרונים.

# nginx -t
# systemctl restart nginx
Check Nginx Configuration Syntax

12. לאחר מכן, כדי לקבל בקשות HTTP מלקוחות, עלינו להגדיר את Varnish לרוץ על פורט 80. להבדיל מגרסאות קודמות של Varnish Cache בהן השינוי הופעל בקובץ הסביבה של Varnish (שכבר אינו בשימוש), בגרסה 6.0 ומעלה.

עלינו לבצע את השינוי הדרוש בקובץ השירות של Varnish. הפעל את הפקודה הבאה כדי לפתוח את קובץ השירות המתאים לעריכה.

# systemctl edit --full  varnish

מצא את השורה הבאה ושנה את ערך המתג -a, שמציין את כתובת ההאזנה והפורט. הגדר את הפורט ל-80 כפי שמוצג בצילום המסך הבא.

שים לב שאם אינך מציין כתובת, ה־varnishd יקשיב על כל ממשקי ה־IPv4 וה־IPv6 הפעילים בשרת.

ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
Change Varnish Listen Port

שמור את השינויים בקובץ וצא ממנו.

13. לאחר מכן, עליך להגדיר את שרת ה־backend שבו יבקר Varnish כדי להביא תוכן ממנו. נעשה זאת בקובץ התצורה הראשי של Varnish.

# vi /etc/varnish/default.vcl 

חפש את סעיף התצורה של ה־backend הברירת מחדל ושנה את המחרוזת "default" ל־server1 (או לכל שם שתבחר כדי לייצג את שרת המקור שלך). לאחר מכן הגדר את הפורט ל־8080 (או לפורט השמע של Nginx שהגדרת בבלוק השרת שלך).

backend server1 {
    .host = "127.0.0.1";
    .port = "8080";
}
Set Default Varnish Backend Servers

במדריך זה, אנו מריצים 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
Confirm Nginx and Varnish Ports

שלב 4: בדיקת הגדרת המטמון של Nginx Varnish

16. לאחר מכן, ודאו שעמודי האינטרנט מועברים דרך המטמון של Varnish כך:

http://www.tecmin.lan
OR
http://10.42.0.144
Verify Nginx Pages Served Via Varnish Cache

17. באפשרותכם גם להשתמש בפקודת curl כפי שמוצג. השתמשו בכתובת ה-IP של השרת או בשם המארח של האתר כפי שמוצג בתמונת המסך הבאה.

# curl -I http:///www.tecmint.lan
Verify Nginx Varnish Cache Page Using Curl

כלי ניהול מטמון של Varnish השימושיים

18. בחלק זה אנו נתאר באופן קצר כמה מתוך התוכניות השימושיות שבהן מגיע Varnish Cache, ושבאפשרותכם להשתמש בהן כדי לשלוט על varnishd, לגשת ליומנים בזיכרון רקע ולסטטיסטיקות כוללות ועוד.

varnishadm

varnishadm כלי לשליטה על מופע Varnish פועל. הוא מקים חיבור CLI ל- varnishd. לדוגמה, ניתן להשתמש בו כדי לרשום מארחים שמוגדרים כמודגם בתמונת המסך הבאה (קראו את man varnishadm לקבלת מידע נוסף).

# varnishadm
varnish> backend.list
List Configured Backends

varnishlog

הכלי varnishlog מספק גישה לנתונים הנוגעים לבקשות. הוא מציע מידע אודות לקוחות ובקשות ספציפיות (קראו את man varnishlog לקבלת מידע נוסף).

# varnishlog
Check Info About Clients and Requests

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 
Show Varnish Statistics

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 
View Shared Memory logs

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
Show Requests Histogram

זה הכל! במדריך זה, הצגנו כיצד להתקין את 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/