ค้นหาเว็บไซต์

วิธีการติดตั้ง Varnish Cache 6 สำหรับ Nginx บน CentOS/RHEL 8


Varnish Cache (โดยทั่วไปเรียกว่า Varnish) เป็นตัวเร่ง HTTP แบบโอเพ่นซอร์ส ทรงพลัง และรวดเร็ว พร้อมด้วยสถาปัตยกรรมสมัยใหม่และมีความยืดหยุ่น ภาษาการกำหนดค่า การเป็นพร็อกซีย้อนกลับนั้นหมายถึงซอฟต์แวร์ที่คุณสามารถปรับใช้ต่อหน้าเว็บเซิร์ฟเวอร์ของคุณ (ซึ่งเป็นเซิร์ฟเวอร์ต้นทางหรือแบ็กเอนด์) เช่น Nginx เพื่อรับคำขอ HTTP ของลูกค้าและส่งต่อไปยัง เซิร์ฟเวอร์ต้นทางสำหรับการประมวลผล และส่งมอบการตอบกลับจากเซิร์ฟเวอร์ต้นทางไปยังไคลเอนต์

วานิชทำหน้าที่เป็นตัวกลางระหว่าง Nginx และ ลูกค้า แต่มีประโยชน์ด้านประสิทธิภาพบางประการ วัตถุประสงค์หลักคือทำให้แอปพลิเคชันของคุณโหลดเร็วขึ้นโดยทำงานเป็นกลไกแคช ได้รับการร้องขอจากไคลเอนต์และส่งต่อไปยังแบ็กเอนด์หนึ่งครั้งเพื่อแคชเนื้อหาที่ร้องขอ (จัดเก็บไฟล์และส่วนของไฟล์ในหน่วยความจำ) จากนั้นคำขอในอนาคตทั้งหมดสำหรับเนื้อหาที่คล้ายกันทั้งหมดจะให้บริการจากแคช

สิ่งนี้ทำให้เว็บแอปพลิเคชันของคุณโหลดเร็วขึ้นและปรับปรุงประสิทธิภาพโดยรวมของเว็บเซิร์ฟเวอร์ของคุณทางอ้อม เนื่องจาก วานิชจะให้บริการเนื้อหาจากหน่วยความจำแทนการประมวลผลไฟล์ Nginx จากดิสก์จัดเก็บข้อมูล

นอกเหนือจากการแคช Varnish ยังมีกรณีการใช้งานอื่นๆ อีกหลายกรณี รวมถึงเราเตอร์คำขอ HTTP และตัวจัดสรรภาระงาน ไฟร์วอลล์ของแอปพลิเคชันเว็บ และอื่นๆ

วานิชได้รับการกำหนดค่าโดยใช้ภาษาการกำหนดค่าวานิช (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

3. หากคุณสงสัยอีกสักหน่อย คุณสามารถตรวจสอบซ็อกเก็ต Nginx TCP ซึ่งทำงานบนพอร์ต 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. เมื่อการติดตั้งโมดูลเสร็จสมบูรณ์ คุณสามารถยืนยันเวอร์ชันของ วานิช ที่ติดตั้งบนระบบของคุณได้

varnishd -V

7. หลังจากติดตั้ง Varnish Cache คำสั่งปฏิบัติการหลักที่ติดตั้งภายใต้ /usr/sbin/varnishd และไฟล์การกำหนดค่า varnish จะอยู่ใน /etc/วานิช/.

ไฟล์ /etc/varnish/default.vcl เป็นไฟล์การกำหนดค่าวานิชหลักที่เขียนโดยใช้ VCL และ /etc/varnish/secret เป็นไฟล์วานิช ไฟล์ลับ

8. ถัดไป เริ่มบริการ วานิช เปิดใช้งานให้เริ่มอัตโนมัติระหว่างการบูตระบบ และยืนยันว่าบริการเปิดใช้งานแล้ว

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

ค้นหาส่วนบล็อกเซิร์ฟเวอร์ตามที่แสดงในภาพหน้าจอต่อไปนี้

10. หากต้องการรัน วานิช ต่อหน้า Nginx คุณควรเปลี่ยนพอร์ต Nginx เริ่มต้นจาก 80 เป็น 8080 (หรือพอร์ตอื่นๆ ที่คุณเลือก)

สิ่งนี้ควรทำในไฟล์การกำหนดค่าบล็อกเซิร์ฟเวอร์ในอนาคตทั้งหมด (โดยปกติจะสร้างภายใต้ /etc/nginx/conf.d/) สำหรับไซต์หรือเว็บแอปพลิเคชันที่คุณต้องการให้บริการผ่าน วานิช .

ตัวอย่างเช่น บล็อกเซิร์ฟเวอร์สำหรับไซต์ทดสอบของเรา 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 จะส่งคำขอไปยังบล็อกเซิร์ฟเวอร์เริ่มต้นเสมอ

11. เมื่อการกำหนดค่าเสร็จสมบูรณ์ ให้ตรวจสอบไฟล์การกำหนดค่าเพื่อดูข้อผิดพลาด และเริ่มบริการ Nginx ใหม่เพื่อใช้การเปลี่ยนแปลงล่าสุด

nginx -t
systemctl restart nginx

12. ถัดไป หากต้องการรับคำขอ HTTP จากไคลเอ็นต์ เราจำเป็นต้องกำหนดค่า วานิช ให้ทำงานบนพอร์ต 80 ต่างจาก Varnish Cache เวอร์ชันก่อนหน้าที่การเปลี่ยนแปลงนี้เกิดขึ้นในไฟล์สภาพแวดล้อม Varnish (ซึ่งขณะนี้เลิกใช้แล้ว) ในเวอร์ชัน 6.0 และสูงกว่า .

เราจำเป็นต้องทำการเปลี่ยนแปลงที่จำเป็นในไฟล์บริการวานิช รันคำสั่งต่อไปนี้เพื่อเปิดไฟล์บริการที่เหมาะสมสำหรับการแก้ไข

systemctl edit --full  varnish

ค้นหาบรรทัดต่อไปนี้และเปลี่ยนค่าของสวิตช์ -a ซึ่งระบุที่อยู่และพอร์ตการฟัง ตั้งค่าพอร์ตเป็น 80 ดังที่แสดงในภาพหน้าจอต่อไปนี้

โปรดทราบว่าหากคุณไม่ได้ระบุที่อยู่ varnishd จะรับฟังอินเทอร์เฟซ IPv4 และ IPv6 ที่มีอยู่ทั้งหมดที่ใช้งานอยู่บนเซิร์ฟเวอร์

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

บันทึกการเปลี่ยนแปลงในไฟล์และออก

13. ถัดไป คุณต้องกำหนดเซิร์ฟเวอร์แบ็กเอนด์ที่ วานิช จะไปเยี่ยมชมเพื่อดึงเนื้อหามา ซึ่งทำได้ในไฟล์คอนฟิกูเรชันหลักของวานิช

vi /etc/varnish/default.vcl 

ค้นหาส่วนการกำหนดค่าแบ็กเอนด์เริ่มต้นและเปลี่ยนสตริง “ค่าเริ่มต้น ” เป็น เซิร์ฟเวอร์1 (หรือชื่อใดๆ ที่คุณเลือกเพื่อแสดงถึงเซิร์ฟเวอร์ต้นทางของคุณ) จากนั้นตั้งค่าพอร์ตเป็น 8080 (หรือพอร์ต Nginx Listen ที่คุณกำหนดไว้ในบล็อกเซิร์ฟเวอร์ของคุณ)

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: ทดสอบการตั้งค่าแคช Nginx Varnish

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

ยูทิลิตี้การดูแลระบบแคชวานิชที่มีประโยชน์

18. ในส่วนสุดท้ายนี้ เราจะอธิบายโดยย่อถึงโปรแกรมอรรถประโยชน์ที่มีประโยชน์ซึ่ง Varnish Cache จัดส่งไปด้วย ซึ่งคุณสามารถใช้ควบคุม varnisd > เข้าถึงบันทึกในหน่วยความจำและสถิติโดยรวม และอื่นๆ อีกมากมาย

วานิช

varnishadm ยูทิลิตี้สำหรับควบคุมอินสแตนซ์ Varnish ที่กำลังรันอยู่ สร้างการเชื่อมต่อ CLI กับ varnishd ตัวอย่างเช่น คุณสามารถใช้เพื่อแสดงรายการแบ็กเอนด์ที่กำหนดค่าไว้ดังที่แสดงในภาพหน้าจอต่อไปนี้ (อ่าน man varnishadm สำหรับข้อมูลเพิ่มเติม)

varnishadm
varnish> backend.list

วานิชล็อก

ยูทิลิตี varnishlog ให้การเข้าถึงข้อมูลเฉพาะคำขอ โดยให้ข้อมูลเกี่ยวกับลูกค้าเฉพาะและคำขอ (อ่าน man varnishlog สำหรับข้อมูลเพิ่มเติม)

varnishlog

สารเคลือบเงา

varnishstat หรือที่รู้จักกันในชื่อ สถิติการเคลือบเงา ซึ่งช่วยให้คุณเห็นภาพรวมประสิทธิภาพปัจจุบันของ Varnish โดยให้การเข้าถึงสถิติในหน่วยความจำ เช่น การพบและพลาดแคช ข้อมูลเกี่ยวกับพื้นที่จัดเก็บข้อมูล , เธรดที่สร้าง, วัตถุที่ถูกลบ (อ่าน man varnishstat สำหรับข้อมูลเพิ่มเติม)

varnishstat 

วานิชท็อป

ยูทิลิตี varnishtop อ่านบันทึกหน่วยความจำที่ใช้ร่วมกันและแสดงรายการที่อัปเดตอย่างต่อเนื่องของรายการบันทึกที่เกิดขึ้นบ่อยที่สุด (อ่าน man varnishtop สำหรับข้อมูลเพิ่มเติม)

varnishtop 

ช่างเคลือบเงา

ยูทิลิตี varnishhist (ประวัติการเคลือบเงา) จะแยกวิเคราะห์บันทึกการเคลือบเงาและส่งออกฮิสโตแกรมที่อัปเดตอย่างต่อเนื่องซึ่งแสดงการกระจายของคำขอ n ล่าสุดโดยการประมวลผล ( อ่าน man varnishhist สำหรับข้อมูลเพิ่มเติม)

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