แบไต๋ฝั่งเซิร์ฟเวอร์: Apache กับ NGINX

เผยแพร่แล้ว: 2020-10-01

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

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

ไปกันเถอะ!

เว็บเซิร์ฟเวอร์คืออะไร?

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

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

ซอฟต์แวร์เว็บเซิร์ฟเวอร์ทำงานร่วมกับส่วนประกอบอื่นๆ หลายอย่างเพื่อให้บริการเว็บไซต์และแอปพลิเคชันที่ทันสมัย ตัวอย่างเช่น ในการตั้งค่า WordPress บนเซิร์ฟเวอร์ คุณต้องมีส่วนประกอบต่อไปนี้:

  • เว็บเซิร์ฟเวอร์ที่รองรับ HTTPS: อาจเป็น Apache, NGINX หรือตัวเลือกอื่นๆ
  • PHP: WordPress สร้างขึ้นจากภาษา PHP ดังนั้นคุณจำเป็นต้องใช้งานระบบการจัดการเนื้อหา (CMS)
  • ซอฟต์แวร์ฐานข้อมูล: อาจเป็น MySQL หรือ MariaDB

สำหรับบทความนี้ เราจะเน้นที่ซอฟต์แวร์เว็บเซิร์ฟเวอร์เพียงอย่างเดียว อย่างไรก็ตาม สิ่งสำคัญคือต้องเข้าใจว่าซอฟต์แวร์ไม่ทำงานในสุญญากาศ ในบางกรณี คุณสามารถกำหนดค่าเว็บเซิร์ฟเวอร์ เช่น Apache และ NGINX ให้ทำงาน ร่วมกัน ได้ วิธีหนึ่งที่เว็บไซต์สามารถทำได้คือการกำหนดค่า NGINX ให้ทำงานเป็น reverse proxy ในขณะที่ใช้ Apache เป็นซอฟต์แวร์เซิร์ฟเวอร์หลัก แอปพลิเคชันที่คุณใช้งานนั้นมีความหลากหลายและหลากหลายอย่างชัดเจน

บทนำสู่ Apache

หน้าแรกของ Apache

เป็นเวลานาน Apache เป็นตัวเลือกเว็บเซิร์ฟเวอร์เริ่มต้นสำหรับไซต์ส่วนใหญ่ ซอฟต์แวร์นี้มีมาตั้งแต่ปี 1995 เมื่อ Robert McCool เปิดตัว Apache HTTP Server ไม่กี่ปีต่อมา Apache Software Foundation เข้ามารับช่วงการบำรุงรักษาและ Apache ได้กลายเป็นซอฟต์แวร์โอเพ่นซอร์ส

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

ชื่อ Apache นั้นฝังแน่นใน Linux ที่ระบบปฏิบัติการ (OS) ใช้คำสั่ง httpd สำหรับกระบวนการเซิร์ฟเวอร์ (บางสิ่งที่พบใน Apache เอง) อย่างไรก็ตาม Apache ไม่ได้เป็นเพียงชื่อเดียวเมื่อพูดถึงเว็บเซิร์ฟเวอร์

ข้อมูลเบื้องต้นเกี่ยวกับ NGINX

หน้าแรกของ NGINX

NGINX ได้รับการออกแบบโดย Igor Sysoev เพื่อให้สามารถจัดการกับสิ่งที่เรียกว่า "ปัญหา C10K" สิ่งนี้เกี่ยวข้องกับการเพิ่มประสิทธิภาพเครือข่ายเพื่อให้สามารถจัดการการเชื่อมต่อพร้อมกันได้ถึง 10K กล่าวอีกนัยหนึ่ง NGINX ถูกสร้างขึ้นโดยคำนึงถึงความสามารถในการปรับขนาดสูงสุด

ซอฟต์แวร์โอเพ่นซอร์สเปิดตัวในปี 2547 และขณะนี้มีใบอนุญาตสองประเภทให้เลือก คุณมีเวอร์ชันโอเพนซอร์สและ NGINX Plus ซึ่งเป็นโซลูชันระดับองค์กรที่มีการสนับสนุนอย่างมืออาชีพและคุณลักษณะอื่นๆ

ในช่วงแรกเริ่ม เว็บไซต์ส่วนใหญ่ใช้ NGINX เพื่อจัดการคำขอแบบคงที่เท่านั้น เนื่องจากมีปัญหาในการติดตั้งเมื่อเทียบกับ Apache ส่วนแบ่งการตลาดของ NGINX เติบโตขึ้นอย่างต่อเนื่องตลอดหลายปีที่ผ่านมา

จากการสำรวจบางฉบับ NGINX ได้ผ่าน Apache เป็นซอฟต์แวร์เว็บเซิร์ฟเวอร์ที่ได้รับความนิยมมากที่สุดในโลก ตัวเลขอื่น ๆ วางไว้บนส้นเท้าของ Apache:

สถิติเกี่ยวกับความนิยมของซอฟต์แวร์เว็บเซิร์ฟเวอร์

ที่มาของภาพ: W3Techs

ความจริงก็คือ NGINX นั้นได้รับความนิยมมากกว่า Apache มากในบรรดาเว็บไซต์ยอดนิยมบนเว็บ เนื่องจาก NGINX มีความได้เปรียบที่ไม่อาจปฏิเสธได้ในเรื่องความสามารถในการปรับขนาด ซึ่งเป็นกุญแจสำคัญสำหรับไซต์ที่มีการเข้าชมจำนวนมาก

นอกจากนี้ NGINX ยังสามารถดึง “หน้าที่สองครั้ง” เป็น reverse proxy หรือ load balancer ได้ หากคุณไม่ต้องการใช้เป็นเว็บเซิร์ฟเวอร์ กล่าวอีกนัยหนึ่งมันสามารถเติมเต็มบทบาทได้มากกว่า Apache

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

Apache กับ NGINX: 3 ความแตกต่างที่สำคัญ

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

1. ร้องขอการจัดการ

ถูกเตือน – นี่คือสิ่งที่ได้รับทางเทคนิคอีกเล็กน้อย Apache ใช้สิ่งที่เรียกว่า Multi-Processing Modules (MPM) เพื่อจัดการการเชื่อมต่อ ซอฟต์แวร์ช่วยให้คุณเลือก MPM ได้สามประเภท:

  1. mpm-prefork : โมดูลนี้สร้างกระบวนการเธรดเดียวเพื่อจัดการแต่ละคำขอ ในทางกลับกัน "ลูก" แต่ละคนสามารถจัดการการเชื่อมต่อเดียวเท่านั้น
  2. mpm_worker : โมดูลนี้สามารถเปิดใช้กระบวนการแบบมัลติเธรด โดยแต่ละเธรดสามารถจัดการการเชื่อมต่อเดียวได้
  3. mpm_event : ส่วนใหญ่ โมดูลนี้ทำงานเหมือนกับ mpm_worker แต่ได้รับการปรับให้เหมาะสมเพื่อให้การเชื่อมต่อคงอยู่

ลักษณะเฉพาะอย่างหนึ่งของ Apache คือช่วยให้คุณสามารถเลือกโมดูลที่คุณต้องการใช้ และสลับได้ตามต้องการ โดยค่าเริ่มต้น Apache จะใช้โมดูล mpm-prefork ซึ่งทำงานได้ดีสำหรับการเชื่อมต่อพร้อมกันจำนวนน้อย โมดูล mpm_worker ดีกว่าเมื่อพูดถึงการปรับขนาด แต่ต้องใช้ทรัพยากรเซิร์ฟเวอร์เพิ่มเติม

ในทางตรงกันข้าม NGINX ใช้สิ่งที่เรียกว่าวิธีการ "ขับเคลื่อนด้วยเหตุการณ์" ซอฟต์แวร์ใช้กระบวนการแบบมัลติเธรด โดยแต่ละเธรดสามารถจัดการการเชื่อมต่อที่หลากหลายได้

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

2. การกำหนดค่าเซิร์ฟเวอร์

Apache ใช้ไฟล์ . htaccess เพื่อตั้งกฎเฉพาะสำหรับวิธีจัดการกับคำขอที่เข้ามา ไฟล์เหล่านั้นมีทุกอย่างตั้งแต่กฎการเปลี่ยนเส้นทางไปจนถึงขีดจำกัดหน่วยความจำ และอื่นๆ

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

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

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

3. โมดูล

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

Apache ไม่เพียงแต่นำเสนอโมดูลเพิ่มเติมเท่านั้น แต่ยังง่ายต่อการค้นหาเอกสารและบทช่วยสอนเกี่ยวกับวิธีการใช้งาน นอกจากนี้ Apache ยังช่วยให้คุณสามารถติดตั้ง เปิดใช้งาน และปิดใช้งานโมดูลต่างๆ ได้ตามต้องการ โดยให้ความยืดหยุ่นในระดับสูงแก่คุณ

NGINX ไม่ได้ให้ข้อได้เปรียบแบบเดียวกัน ในการใช้โมดูล คุณต้องคอมไพล์โมดูลเหล่านั้นลงในแกน NGINX ยิ่งไปกว่านั้น คุณไม่สามารถปิดการใช้งานโมดูลเมื่อคอมไพล์แล้ว ทำให้สลับตัวเลือกได้ยากขึ้นมาก

สิ่งสำคัญที่ควรทราบคือ NGINX Plus มีคุณลักษณะโมดูลแบบไดนามิกที่ช่วยให้คุณสามารถปิดใช้งานและเปิดใช้งานโมดูลได้ตามต้องการ อย่างไรก็ตาม แม้จะใช้กับ Plus คุณยังต้องคอมไพล์โมดูลเหล่านั้นด้วยแกน NGINX ก่อนจึงจะสามารถใช้งานได้

แม้ว่าไลบรารีโมดูลและเอกสารประกอบของ NGINX จะเติบโตอย่างต่อเนื่อง แต่ก็ยังไม่สามารถจับคู่ Apache ในแง่ของปริมาณได้ เมื่อพิจารณาถึงวิธีที่ NGINX ยังคงได้รับส่วนแบ่งการตลาดเพิ่มขึ้น แม้ว่าสิ่งนี้อาจจะเปลี่ยนแปลงได้ในอนาคตอันใกล้

ข้อดีและข้อเสียของ Apache กับ NGINX

ถึงตอนนี้ คุณเข้าใจความแตกต่างหลักระหว่าง Apache และ NGINX แล้ว มาดูรายละเอียดข้อดีและข้อเสียของซอฟต์แวร์แต่ละอย่างโดยย่อกัน

Apache

ในการเริ่มต้น เรามาพูดถึงประโยชน์หลักของการใช้ Apache:

  • สามารถติดตั้งและกำหนดค่าได้ง่ายขึ้น
  • คุณสามารถควบคุมการกำหนดค่าเซิร์ฟเวอร์ของคุณได้ละเอียดยิ่งขึ้นด้วย . htaccess files
  • การเลือกโมดูลจะดีกว่า และคุณสามารถเปิดใช้งานและปิดใช้งานโมดูลได้ตามต้องการ
  • คุณสามารถเลือกวิธีจัดการคำขอโดยใช้โมดูลต่างๆ ได้

ข้อเสียเปรียบหลักของการใช้ Apache กับ NGINX คือตัวหลังปรับขนาดได้ดีกว่า หากคุณยังอยู่ในช่วงเติบโตของเว็บไซต์ของคุณ Apache น่าจะมีมากเกินพอที่จะรองรับปริมาณการใช้งาน

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

NGINX

NGINX มีข้อดีที่ชัดเจนสองประการเมื่อพูดถึง Apache – ประสิทธิภาพและความสามารถในการปรับขนาด เพื่อให้เฉพาะเจาะจงมากขึ้น NGINX จะดีกว่าเมื่อพูดถึง:

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

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

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

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

บทสรุป

การเปลี่ยนเซิร์ฟเวอร์หรือซอฟต์แวร์เซิร์ฟเวอร์ถือเป็นการตัดสินใจครั้งใหญ่ ดังนั้น คุณจึงควรใช้โซลูชันเซิร์ฟเวอร์ที่คุณจะใช้ในระยะยาว

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

คุณมีคำถามเกี่ยวกับวิธีเลือกระหว่าง Apache และ NGINX หรือไม่? พูดคุยเกี่ยวกับพวกเขาในส่วนความคิดเห็นด้านล่าง!

ภาพขนาดย่อของบทความโดย ProStockStudio / shutterstock.com